use*_*531 1 c++ encryption cryptography crypto++
我有这个代码尝试解密:
byte key[AES::DEFAULT_KEYLENGTH];
string key_s = "essasenhaehfraca";
for (int i = 0; i < key_s.size(); i++)
key[i] = (byte) key_s[i];
string ciphertext = "A506A19333F306AC2C62CBE931963AE7DFCFFA940360A40FFD5DC69B9C2E53AD"
string decryptedtext;
try
{
ECB_Mode< AES >::Decryption decryptor;
decryptor.SetKey(key, sizeof(key));
CryptoPP::StringSource(ciphertext, true,
new CryptoPP::StreamTransformationFilter( decryptor,
new CryptoPP::StringSink( decryptedtext )
)
);
}
catch(const CryptoPP::Exception& e)
{
cerr << e.what() << endl;
system("pause");
exit(1);
}
return 0;
Run Code Online (Sandbox Code Playgroud)
当我执行它时,我得到了异常
StreamTransformationFilter: invalid pkcs #7 block padding found.我搜索过,但没有找到任何东西.有人知道我为什么会收到这个错误吗?我在互联网上找到的每个例子都是以同样的方式,没有一个提到这个错误.
看起来您的Cipher文本是十六进制编码的.您需要HexDecoder在解密流中添加一个:
CryptoPP::StringSource ss(ciphertext, true,
new CryptoPP::HexDecoder(
new CryptoPP::StreamTransformationFilter( decryptor,
new CryptoPP::StringSink( decryptedtext ) ) ) );
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4548 次 |
| 最近记录: |