首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >弱密码(破碎算法)误差

弱密码(破碎算法)误差
EN

Stack Overflow用户
提问于 2016-11-15 16:02:46
回答 2查看 106关注 0票数 1

我有一个用于编码的函数,如下所示:

代码语言:javascript
复制
$skey = "whateveryoulike"; // you can change it
if(!$value){return false;}
$text = $value;
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_DEV_URANDOM);
$crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $skey, $text, MCRYPT_MODE_ECB, $iv);

但是问题是,当我为了PCI而运行PHP扫描仪时,我在下面的一行中得到了一个错误:弱密码(破坏算法)

代码语言:javascript
复制
--> $crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $skey, $text, MCRYPT_MODE_ECB, $iv);

有没有人能帮我指出我应该在这里使用哪种密码。提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-16 20:43:44

这最终解决了这个问题:

将键长从15增加到16,因为它必须是16、24或32

代码语言:javascript
复制
$skey = "whateveryoulike";

代码语言:javascript
复制
$skey = "whateveryoulikek";

然后:

发自:

代码语言:javascript
复制
$crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $skey, $text, MCRYPT_MODE_ECB, $iv);

至:

代码语言:javascript
复制
$crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $skey, $text, MCRYPT_MODE_CFB, $iv);
票数 0
EN

Stack Overflow用户

发布于 2016-11-15 16:52:16

MCRYPT_RIJNDAEL_256不是AES,它是块大小为256位的Rijndael,而不是256位的密钥大小。最好使用AES,它的块大小为128位,即RIJNDAEL_128。

确保ekey是正确的大小,16,24或32字节的长度,其他的功能将拒绝键或垫它的东西,没有标准的关键填充。

不要使用欧洲央行模式,它是不安全的,参见欧洲央行模式,向下滚动到企鹅。相反,使用CBC模式与随机IV,只是前缀加密的数据与IV在解密中使用。

mcrypt不支持PKCS#7填充,只有不能与二进制数据一起使用的非标准空填充。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40614397

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档