关于java php go 中AES加解密秘钥长度问题
今天心血来朝,想用go把php中的一个小功能重写一下,但在解密aes加密的数据时碰到了个坑!
php的mcrypt拓展(php7.1版本以上次扩展默认不支持,可通过源码编译,方法会报废弃警告)提供了aes的加解密:
而且php aes 的秘要长度不仅仅 128 192 256 规定的这三种长度。只要不超过256都行。
所以php的加密秘钥传了个23*8=184。不知道当时的前辈是咋想的!!!
但是到go语言"crypto/aes"包里:
限制了秘钥长度位16 24 32 字节 也就是128 192 256位。所以暂时不能用go的标准库解密了,只能通过其他方式解决了。
在网上寻找答案的过程中,我发现java的加密有如下说法。
如果提前熟知使用规则,就不至于在项目后期出差错。
所以在平时使用到的技术,不光要知其然,也要知其所以然。这样在使用的时候,我们才不会犯下比较低级的错误。
发现几篇加解密有关的博文,分享给大家:
AES对称加密算法原理
JAVA破解AES秘钥长度限制
golang使用aes库实现加解密
AES-128\192\256加密算法及其安全脆弱分析
文字均为博主原创,转载请联系博主,谢谢!