mcrypt_encrypt在php和ios中有不同的结果

时间:2013-08-08 19:01:33

标签: php ios objective-c mcrypt blowfish

我一直在尝试加密PHP 5.2中的内容,如下所示:

$key = "12345678901234567890123456789012345678901234567890123456";//56 chars
$iv = "12345678";//8 chars
$text = "Nick is pooping.";//16 chars

$enc = mcrypt_encrypt("blowfish", $key, $text, "cbc", $iv);

var_dump($enc); echo "<br>";
var_dump(base64_encode($enc)); echo "<br>";

这是输出:

string(16) "–±–%ê„zÆtȾ R" 
string(24) "lrGWJeofhHrGdMi+BiBSHQ==" 

我在iOS上使用this,使用以下代码:

Blowfish* _blowfish = [BlowfishAlgorithm new];
[_blowfish setMode:[BlowfishAlorithm buildModeEnum:@"CBC"]];
[_blowfish setKey:@"12345678901234567890123456789012345678901234567890123456"];
[_blowfish setInitVector:@"12345678"];
[_blowfish setupKey];
NSLog(@"%@",[_blowfish encrypt:@"Nick is pooping."]);

输出:

3132333435363738f61e0c4683e55fe061f1951e7a8182be

base64_encode不能在php中完成这个技巧,我无法弄清楚如何匹配它们以便它们输出相同的内容。 :(

1 个答案:

答案 0 :(得分:0)

要删除这些空字符,可以使用rtrim函数。通过它运行解密输出后它应该是相等的。

有关更多信息,请参阅此链接:

https://stackoverflow.com/a/15352155/516512