Я использую crypto ++ для шифрования и дешифрования строки. Код показан ниже.
Код шифрует имя пользователя и пароль. Но я не знаю, как расшифровать его снова в строку. Что такое код для расшифровки зашифрованного кода SHA256 в строку.
Может кто-нибудь мне помочь.
#include <cryptopp/hex.h>
#include <cryptopp/sha.h>
#include <cryptopp/base64.h>
#include <iostream>
#include <string>
int main()
{
CryptoPP::SHA256 hash;
byte digest[CryptoPP::SHA256::DIGESTSIZE];
std::string username, password, salt, output;
std::cout << "Enter username: ";
std::getline(std::cin,username);
std::cout << std::endl << "Enter password: ";
std::getline(std::cin,password);
salt = username + password;
hash.CalculateDigest(digest,(const byte *)salt.c_str(),salt.size());
CryptoPP::HexEncoder encoder;
CryptoPP::StringSink *SS = new CryptoPP::StringSink(output);
encoder.Attach(SS);
encoder.Put(digest,sizeof(digest));
encoder.MessageEnd();
std::cout << "The username/password salted hash is => " << output << std::endl;
return 0;
}
Этот код не выполняется шифрование, как уже отмечали комментаторы, но хэширования. Основное отличие состоит в том, что хеширование, по замыслу, не является обратимым дешево. Это важно в приложениях с паролями, потому что вы явно не хотите хранить пароли пользователей в какой-либо доступной форме, а только проверять их.
Итак, короткими словами: вы не можете «расшифровать» свой хэш.
Если вы хотите проверить правильность введенного пароля, вы снова его хешируете, как в своем коде, и сравниваете хеш с хешем исходного пароля.
Других решений пока нет …