Php 为什么Laravel4.2加密密钥小于CodeIgniter中的加密密钥字符?

Php 为什么Laravel4.2加密密钥小于CodeIgniter中的加密密钥字符?,php,codeigniter,security,encryption,laravel-4,Php,Codeigniter,Security,Encryption,Laravel 4,我目前正在学习Laravel4.2,并开始与Codeigniter进行比较 但是我在加密密钥字符上发现了一些问题,如下代码所示 我在Laravel4.2中使用了这个键进行测试,但它不起作用,因为我收到了消息 “mcrypt_encrypt():密钥大小对于此算法来说太大” 但是,当我在Codeigniter最新版本中使用相同的加密密钥时,它的工作非常完美 我的问题是:如果我使用了加密密钥的MCRYPT_RIJNDAEL_256,Larave 4.2如何安全 “键”=> 2)vvvvvvvvvv

我目前正在学习Laravel4.2,并开始与Codeigniter进行比较 但是我在加密密钥字符上发现了一些问题,如下代码所示 我在Laravel4.2中使用了这个键进行测试,但它不起作用,因为我收到了消息 “mcrypt_encrypt():密钥大小对于此算法来说太大”

但是,当我在Codeigniter最新版本中使用相同的加密密钥时,它的工作非常完美

我的问题是:如果我使用了加密密钥的MCRYPT_RIJNDAEL_256,Larave 4.2如何安全

  • “键”=> 2)vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvDRLCCZTE2UJLTZV5S3JZKN5BJVGQKRDSCZZTE2UJLTZV5S3JZKN5BJVG2)vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvkrdsdrlcczte2ujltzv5s3jzkn5bjvgqkrdsdrlcczte2ujltzv5s3jzkn5b2)vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvVGQKRDRLCCZTE2UJLTZV5S3JZKN5BJVGQKRDRLCCZTE2UJLTZV5S3JZK2)vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv5Bjvgqkrdsdrlcczte2ujltzv5s3jzkn5Bjvgqkrdsdrlcczte2ujltzv5s3JZKN5BJVGQKRDSLCCZTE2UJLTZV5BJVGKRDSLCCZTE2UJLTZV5S3JZKN5BJVGKRDSLCCZTE2UJLTZV5S3JZKN5BJVGKRDSLCCZTE2UJLTZV5S3JZKN5BJVGKRDLCZTE2UJLTZV5UJLTZKRDLCZTE2UJLTZKR5BJZKRDLCCZTE2UJLTZKN5BJZKN5B5BJZKR5BJZKR5JZKDZKD5RZKRZKD5UZ
  • “密码”=>MCRYPT_RIJNDAEL_256

AES密钥需要与随机密钥以及16、24或32字节长度无法区分。似乎Laravel为AES密钥添加了一个额外的检查,以确保其大小有效

基本上,PHP的
mcrypt
所做的(不确定C代码)是,如果密钥小于32字节,它将使用
00
值字节扩展密钥数据,直到达到第一个合法的AES密钥大小。如果密钥大于32字节,则只需将其剪切为32字节。这绝对不符合处理钥匙的任何良好做法

因此,您的AES密钥可能被解释为
“SdRlCcZtE2ujlTZv5S3JZKN5bJvGQkrd”
,编码为ASCII。这种密钥当然不能提供AES-256的完全安全性,因为该密钥显著减少了密钥空间(如果使用62个字符的字母表,则略多于8个字节,假设字母表中的每个值的可能性相同)


请注意,
MCRYPT_RIJNDAEL_256
不是AES,因此您只能使用支持块大小为256的RIJNDAEL的库对其进行解密。

您知道您的密钥只有大约50个字符重复30次吗?你为什么这么做?最好是在轮班交换中完全随机,我不想这样做,我也不明白,我应该如何为Laravel 4.2选择Encrype密钥类型,这就是为什么我询问所有专家,现在请您推荐我使用它。我现在应该使用哪一个字符进行加密?Owlstead,所以我必须起诉SdRlCcZtE2ujlTZv5S3JZKN5bJvGQkrd,它可能是安全的,也可能是加密的,对吧?很明显,这个特定的密钥现在不再安全了,你已经在这里发布了。如果密钥是由随机数生成器生成的,那么它仍然有足够的强度用于AES-128(这是非常安全的),但我不再使用AES-256。如果您想要一个安全密钥,请使用随机数生成器生成它,如果您需要一个字符串,请使用十六进制来存储密钥值。