首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不同的PHP 256 mcrypt输出。

不同的PHP 256 mcrypt输出。
EN

Stack Overflow用户
提问于 2015-04-11 23:33:18
回答 1查看 220关注 0票数 2

我试图使用CAST256和CBC通过mcrypt_encrypt函数加密字符串。我使用键test和输入test,它生成以下代码:

代码语言:javascript
复制
mcrypt_encrypt(MCRYPT_CAST_256, 'test', 'test', MCRYPT_MODE_CBC);

它的base64编码版本产生(在PHP5.5.12版本上):

代码语言:javascript
复制
DaypOCFVfoI8ghemj0ZkEg==

但是,我将输出与工具/加密/上的工具进行比较,输出有很大不同;使用上述密码、模式、密钥和数据的站点输出如下:

代码语言:javascript
复制
eIKnQGAhjsGh+11XZsA2Lg==

使用相反的工具解密每个字符串(即用PHP解密的站点输出和通过站点解密的PHP输出)提供以下输出:

代码语言:javascript
复制
DUCD000000000000 (site output)
DUCD000000000000 (PHP output)

但是,使用与字符串相同的介质解密会给出输入数据('test')。

我的问题是,是否存在这种差异的原因,例如在加密/解密时遗漏了IV,或者滥用了PHP mcrypt_decrypt函数?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-13 18:03:55

这很可能是libmcrypt的cast-256模块中的一个bug,您所链接的站点似乎受到了它的影响。

我得到的输出与您在本地机器上的输出相同,RFC2612测试向量也通过我的测试向量,所以不要担心--这对您来说不是一个错误,也不是在您的端部出现故障。

但是,我不得不说,如果不使用IV和正确的加密密钥('test‘不是正确的密钥),就不应该加密。您还应该使用更成熟的算法,比如AES。

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

https://stackoverflow.com/questions/29584267

复制
相关文章

相似问题

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