【发布时间】:2012-09-28 20:45:57
【问题描述】:
我正在尝试加密一个 xml 字符串,将其保存在某处,然后稍后解密(在 cbc 模式下使用河豚)。
当我解密字符串时,它会打乱前 4 个字符。
$text = "<?xml version="1.0" encoding="ISO-8859-1"?> ....";
$td = mcrypt_module_open('blowfish', '', 'cbc', '');
$iv = 'kd84h28v';
$ks = mcrypt_enc_get_key_size($td);
$key = substr(md5('randomString1234'), 0, $ks);
mcrypt_generic_init($td, $key, $iv);
$cypher = mcrypt_generic($td, $text);
print mdecrypt_generic($td, $cypher);
# prints: çGÖºÌrsion="1.0" encoding="ISO-8859-1"?>
我会改用ecb 模式——它可以很好地解密——除了当前的 php 实现忽略了 iv。
任何想法我做错了什么?
【问题讨论】:
-
ECB 不支持 IV,它不是实现细节。这就像说“我会骑摩托车,但目前的本田车型没有四个轮子。”
标签: php blowfish encryption-symmetric