1

XML 文字列を暗号化し、どこかに保存してから、後で復号化しようとしています (blowfish を 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を無視します.

私が間違っていることはありますか?

4

1 に答える 1

0

マニュアルから:

データを復号化する前に、mcrypt_generic_init() で暗号化バッファを再初期化することが非常に重要です。

したがって、おそらく次のようなものが必要です。

mcrypt_generic_init($td, $key, $iv);
$cypher = mcrypt_generic($td, $text);
mcrypt_generic_deinit($td);
mcrypt_generic_init($td, $key, $iv);
print mdecrypt_generic($td, $cypher);
于 2012-09-13T19:55:05.030 に答える