- 论坛徽章:
- 0
|
我使用openssl的aes库函数AES_cbc_encrypt来加密,代码是参考网上的:
int aes_encrypt(char* in, char* key, char* out))
{
if(!in || !key || !out) return 0;
unsigned char iv[AES_BLOCK_SIZE] = {3,6,8,1,5,9,0,2,7,4,0,3,6,8,1,5};
AES_KEY aes;
if(AES_set_encrypt_key((unsigned char*)key, 256, &aes) < 0)
{
return 0;
}
int len=strlen(in);
AES_cbc_encrypt((unsigned char*)in, (unsigned char*)out, len, &aes, iv, AES_ENCRYPT);
return 1;
}
我要加密的一段字符串里面有数字,如果这个数字是9546,那么加密是没问题的,strlen(out) 是大于strlen(in) 的,解密也没问题。
但是如果数字改为9545, 那么加密就出现问题了,strlen(out) 是小于strlen(in) 的,解密也会不完整。
这个是为什么呢? 其他字符串都没变,就一个数字从6变成5,加密后长度就不对了?? 是中间被0截断了??但是没有0数字啊,求教大神帮解决。。
|
|