mcrypt 问题

2014-07-29 19:04:12 +08:00
 icemanpro
<?php
/* Open the cipher */
$td = mcrypt_module_open('rijndael-256', '', 'ofb', '');

/* Create the IV and determine the keysize length, use MCRYPT_RAND
* on Windows instead */
$iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_DEV_RANDOM);
$ks = mcrypt_enc_get_key_size($td);

/* Create key */
$key = substr(md5('very secret key'), 0, $ks);

/* Intialize encryption */
mcrypt_generic_init($td, $key, $iv);

/* Encrypt data */
$encrypted = mcrypt_generic($td, 'This is very important data');
echo (base64_encode($encrypted));

?>

像这样,每次生成的encrypted都不一样. 那怎么能下次再解密?
2329 次点击
所在节点    PHP
1 条回复
vixvix
2014-07-30 03:26:06 +08:00
你把mdecrypt_generic的文档和例子看看. 我没用过这个库,理论上来说,你只要用相同模块rijndael-256, 和相同的key - 'very secret key'就可以解开加密的文件。加密的data由于使用random生成initialization vector(iv), 所以生成的加密数据每次也不同,具体细节可以参考使用的加密模块,例如这里用到的rijndael-256.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/125124

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX