PHP的AES / Rijndael加密的误导
2014-04-25 23:01
246 查看
在加密解密中经常遇到的一个问题就是用java加密用php解密或者反之用php加密java解密。通常的问题是补零的问题。
最近又遇到一次,是密钥长度的问题,于是搜索找到了这篇文章,讲的很详细。翻译转载希望其他碰到问题的同学更容易搜到。
《PHP的AES / Rijndael加密的误导》
AES是不完全等同于“ Rijndael算法” 。 AES是Rijndael算法的(更严格)的变体。
AES块大小固定为有128位,密钥长度为128, 192,或256位的,而Rijndael算法指定块和密钥大小为32的任意倍数,最少的128位 ,最多的256位。
PHP提供了一个通用的Rijndael算法实现。PHP的mcrypt的API产生了无意的误导,因为大多数用户会认为指定MCRYPT_RIJNDAEL_256意味着你会得到256位加密。事实并非如此。MCRYPT_RIJNDAEL_256实际上将算法的块大小设置为256bit(而不是强度)。
关于PHP的加密函数(mcrypt )的详细信息,请参见这篇文章。
AES加密标准被定义为使用16字节的块大小Rjindael加密(128位, 192位或256位) 。Chilkat实现了AES加密标准。当你在PHP中指定MCRYPT_RIJNDAEL_256,你*不*是设置加密强度为256位而是将块大小设置为256位。这不是AES加密。要正确地产生在PHP中的256位AES加密,您必须提供一个32字节的加密密钥(它隐式设置加密强度) ,但是块大小必须设置为MCRYPT_RIJNDAEL_128 ( 16字节) 。
http://www.cknotes.com/php-aesrijndael-encryption-confusion/
另:需要代码的可以看这篇
http://my.oschina.net/Jacker/blog/86383
最近又遇到一次,是密钥长度的问题,于是搜索找到了这篇文章,讲的很详细。翻译转载希望其他碰到问题的同学更容易搜到。
《PHP的AES / Rijndael加密的误导》
AES是不完全等同于“ Rijndael算法” 。 AES是Rijndael算法的(更严格)的变体。
AES块大小固定为有128位,密钥长度为128, 192,或256位的,而Rijndael算法指定块和密钥大小为32的任意倍数,最少的128位 ,最多的256位。
PHP提供了一个通用的Rijndael算法实现。PHP的mcrypt的API产生了无意的误导,因为大多数用户会认为指定MCRYPT_RIJNDAEL_256意味着你会得到256位加密。事实并非如此。MCRYPT_RIJNDAEL_256实际上将算法的块大小设置为256bit(而不是强度)。
关于PHP的加密函数(mcrypt )的详细信息,请参见这篇文章。
AES加密标准被定义为使用16字节的块大小Rjindael加密(128位, 192位或256位) 。Chilkat实现了AES加密标准。当你在PHP中指定MCRYPT_RIJNDAEL_256,你*不*是设置加密强度为256位而是将块大小设置为256位。这不是AES加密。要正确地产生在PHP中的256位AES加密,您必须提供一个32字节的加密密钥(它隐式设置加密强度) ,但是块大小必须设置为MCRYPT_RIJNDAEL_128 ( 16字节) 。
http://www.cknotes.com/php-aesrijndael-encryption-confusion/
另:需要代码的可以看这篇
http://my.oschina.net/Jacker/blog/86383
相关文章推荐
- cenos 6.4下安装phpmotion
- 10个php中的$_SERVER函数
- 创业公司招php商城开发者
- PHP 向 MySql 中数据修改操作时,只对数字操作有效,非数字操作无效,怎么办?
- 浅谈PHP神盾的解密过程
- PHP中获取当前页面的完整URL
- PHP CURL 发送请求
- wp文章编辑处作者的更改
- PHP5.4 + IIS + Win7的配置
- PHP 配置MYSQL (MY.INI)
- thinkphp关联模型具体使用
- thinkphp改写的上传类及缩放水印类
- vsftp配置主动模式和被动模式
- 【PHP配置】 配置XDEBUG过程中遇到的一个问题
- php 自己写的一个数组分类合并array_merge(函数的剖析)
- js实现php函数urlencode
- php 安装ffmpeg-php
- awesome PHP之依赖注入容器pimple
- Yii中ajaxLink的使用
- 【小白笔记】PHP学习之路 (32) --session(2)