mcrypt_在php和ios中加密不同的结果

mcrypt_在php和ios中加密不同的结果,php,ios,objective-c,mcrypt,blowfish,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); ec

我一直在尝试在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>";
我在iOS端使用以下代码:

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中不起作用,我也不知道如何匹配它们以使它们输出相同的结果:(

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

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


我看不出您在Objective-C代码中设置了相同的键和初始化向量。哎呀!我的错——我是手动从VirtualBox复制代码的,所以我搞砸了——现在就在那里。奇怪的是:如果您将输出解释为十六进制字节,您会得到以下结果:。前8个字符是IV…其余的我不知道。我不能ot下载您链接到的代码(要求我注册),我建议您寻找另一种实现,以检查该实现是否错误实现。检查您的字符编码。我敢打赌其中一个与另一个不同。PHP到底输出什么?它是什么编码?它看起来像一堆乱七八糟的外语字符。我应该如何将其转换为纯文本?我应该对其进行base64编码还是使用bin2hex或pack?处理此问题的最标准方法是什么?
3132333435363738f61e0c4683e55fe061f1951e7a8182be