OpenSSL AES_ecb_encrypt加密解密算法,在Windows系统上需要注意什么?因为我现在有问题,我写的加解密接口的数据和文件正常。通过网页加密工具获得的加密数据无法在代码中解密 我认为密钥和对齐方式是一样的,而且加密模式是使用ECB。
代码里都是保持一致的
明文-> aes,明文-> aes -> base64,都尝试过,都失败了。
所以有可能是Windows和Web工具(其他语言java,py)的加密和解密有啥注意的点吗。
std::string DecodeAES(std::string szData)
{
std::string szDst;
try
{
if (szData.empty())
{
return "";
}
const unsigned int uKeySize = static_cast<unsigned int>(m_szAesRecvKey.size());
//初始化key
AES_KEY key = { 0 };
AES_set_decrypt_key(reinterpret_cast<const unsigned char*>(m_szAesRecvKey.data()), static_cast<int>(8 * uKeySize), &key);
//解密
std::vector<unsigned char> sRst(szData.size());
for (size_t i = 0; i < szData.size(); i += AES_BLOCK_SIZE)
{
AES_ecb_encrypt(reinterpret_cast<const unsigned char *>(szData.data() + i), &sRst[i], &key, AES_DECRYPT);
}
//去掉填充
const size_t pads = sRst[sRst.size() - 1];
if (pads > 0 && pads <= uKeySize && ((sRst.size() - pads) > 0))
{
szDst.assign(sRst.begin(), sRst.end() - pads);
}
}
catch (const std::exception)
{
}
return szDst;
}