Я интегрирую Crypto ++ в свое приложение C ++, и пока оно работает, почти.
Шифрование работает идеально. Вывод соответствует тому, что я ожидал. Однако, когда я иду расшифровать, он добавляет квадратные символы в конце.
Вот моя функция шифрования:
string Encryption::EncryptAES(const string &text, const string &key) {
string cipher;
AES::Encryption aes((byte *) key.c_str(), 32);
ECB_Mode_ExternalCipher::Encryption ecb(aes);
StreamTransformationFilter encrypt(ecb, new StringSink(cipher), StreamTransformationFilter::ZEROS_PADDING);
encrypt.Put(reinterpret_cast<const unsigned char *>( text.c_str()), text.length() + 1);
encrypt.MessageEnd();
return Base64::Encode(cipher);
}
Вот моя функция расшифровки:
string Encryption::DecryptAES(const string &text, const string &key) {
string decoded;
Base64::Decode(text, decoded);
string decrypted;
AES::Decryption aes((byte *) key.c_str(), 32);
ECB_Mode_ExternalCipher::Decryption ecb(aes);
StreamTransformationFilter decrypt(ecb, new StringSink(decrypted), StreamTransformationFilter::ZEROS_PADDING);
decrypt.Put(reinterpret_cast<const unsigned char *>( decoded.c_str()), decoded.length());
decrypt.MessageEnd();
return decrypted;
}
Я использую следующее для Base64 Encode / Decode:
Base64 Кодирование / Декодирование
Вот код, который я вызываю для шифрования / дешифрования:
string encryptedPass = EncryptAES(value, key);
cout << "Encrypted Text: " << encryptedPass << endl;
string decryptedPass = DecryptAES(encryptedPass, key);
cout << "Decryped Text: " << decryptedPass << endl;
Вот вывод:
Когда я копирую и вставляю вывод в Notepad ++, это куча пробелов. У меня есть ощущение, что он имеет дело с ZEROS_PADDING
, но мне нужно, чтобы он соответствовал другим нашим приложениям, которые мы используем.
Я не уверен, как на самом деле попытаться это исправить. Мысли?