不同语言产生加密差异的原因
不同语言产生不同加密结果差异的主要原因基本上产生在算法选择、填充方式、$IV量这几方面的差异
具体可以看这篇文章:https://segmentfault.com/a/1190000018059273 文章里面有个错误 我已经在评论里面指出。
但是其他方面总结的非常全面:
MCRYPT_RIJNDAEL_256 并不是 AES-256
1 2 3 |
MCRYPT_RIJNDAEL_128 & MCRYPT_MODE_CBC + 16位Key = openssl_encrypt(AES-128-CBC, 16位Key) = AES-128 MCRYPT_RIJNDAEL_128 & MCRYPT_MODE_CBC + 24位Key = openssl_encrypt(AES-192-CBC, 24位Key) = AES-192 MCRYPT_RIJNDAEL_128 & MCRYPT_MODE_CBC + 32位Key = openssl_encrypt(AES-256-CBC, 32位Key) = AES-256 |
openssl_* 的 AES cipher 的 iv 长度 固定 为 16 位
这一点 很多网上抄写的代码基本上都用mcrypt_get_iv_[......]