免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 7405 | 回复: 1
打印 上一主题 下一主题

[请教]mcrypt_encrypt AES 256加密问题 [复制链接]

论坛徽章:
1
申猴
日期:2014-12-23 16:52:51
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-10-16 22:08 |只看该作者 |倒序浏览
应用需要由服务器生成一段加密过的信息给客户端。
客户端为嵌入式设备。

打算使用AES-256 CEB/CBC

使用AES 256时得到的密文在PC上面使用其它工具解密得不到正确的原文。
  1. $privateKey = "1234567890abcdef1234567890abcdef";
  2. $encrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $privateKey, $data, MCRYPT_MODE_ECB);
复制代码
后来使用AES 128时,PC上面的工具可以正确解密原文。
  1. $privateKey = "1234567890abcdef";
  2. $encrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $privateKey, $data, MCRYPT_MODE_ECB);
复制代码
请有做过的朋友指点一下。

论坛徽章:
1
申猴
日期:2014-12-23 16:52:51
2 [报告]
发表于 2013-10-24 10:40 |只看该作者
查到以下文章,问题解决了。
http://stackoverflow.com/questio ... 6-encryption-in-php

AES-128/AES-192/AES-256都使用16字节的块大小,所以都使用 MCRYPT_RIJNDAEL_128 算法,
仅是密钥长度不一样。

MCRYPT_RIJNDAEL_256 与 AES-256 并不是一回事。
  1. <?php

  2.     $data = "Sometime it is needed to use 2 way encryption for storing data.";

  3.     //$privateKey = "0123456789abcdef"; // AES-128
  4.     //$privateKey = "0123456789abcdef01234567"; // AES-192
  5.     $privateKey = "0123456789abcdef0123456789abcdef"; // AES-256

  6.     $encrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $privateKey, $data, MCRYPT_MODE_ECB, '');

  7.     header("Content-Encoding: none");
  8.     header("Content-type: application/x-msdownload");
  9.     header("Cache-Control: private");
  10.     header("Accept-Ranges: bytes");
  11.     header("Accept-Length: ".strlen($encrypted));
  12.     header("Content-Disposition: attachment; filename=test.bin");
  13.     header('Pragma: no-cache');
  14.     header('Expires: 0');
  15.    
  16.     echo $encrypted;

  17. ?>
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP