AES解密和'invalid pkcs #7 block padding'
AES decryption and 'invalid pkcs #7 block padding'
我有这段代码来尝试解密:
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;
当我执行它时,我得到异常 StreamTransformationFilter: invalid pkcs #7 block padding found
.我搜索了一下,什么也没找到。有人知道为什么我会收到此错误吗?我在互联网上找到的每个示例都是以相同的方式,并且没有一个提到此错误。
看起来您的密文是十六进制编码的。 您需要向解密流添加HexDecoder
:
CryptoPP::StringSource ss(ciphertext, true,
new CryptoPP::HexDecoder(
new CryptoPP::StreamTransformationFilter( decryptor,
new CryptoPP::StringSink( decryptedtext ) ) ) );
根据我的经验,我认为这是因为您没有正确创建密钥:
byte* key_s = (byte*)"essasenhaehfraca";
SecByteBlock key( key_s, AES::DEFAULT_KEYLENGTH );
之后:
ECB_Mode< AES >::Decryption d;
d.SetKey( key, key.size() );
相关文章:
- 为什么我需要在以下示例中在 block_cache.h 之前包含 block_cache_key.h 和 block.h
- 什么 clang-format 相当于 rustfmt 的 indent_style=Block?
- 如何定义此"if block"中其他无效输入的值,以便在c ++中将字符串转换为对象?
- C++ /CLI padding of DataGridView DefaultCellStyle
- de if-Block 是什么意思
- QTcpSocket and TCP padding
- Eigen::MatrixXd.block assignment using a std::vector
- base64 decode with openssl BIO block by block
- "Do not change a loop variable inside a for loop block"的意义是什么?
- PSK5 padding in C++
- Metis - Block output
- 将 .block() 与复矩阵 eigen lib 一起使用
- 使用block()在分配中使用block()缩小矩阵
- 如何将C++ Rijndael 加密转换为 C#,当出现错误说"Padding is invalid and cannot be removed"?
- 如何运行由 Code::Block 创建的控制台应用程序
- 如何从特征矩阵中获取不连续的数据"block"?
- Visual Studio C++ "Automatically format completed block on }"
- "padding class 'Tester' with 4 bytes"警告是什么意思?
- 带有 MSG_PEEK 的 recv() 显示完整消息,但正常返回'would block'
- AES解密和'invalid pkcs #7 block padding'