首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP与目标C不同的Blowfish加密编码

PHP与目标C不同的Blowfish加密编码
EN

Stack Overflow用户
提问于 2015-03-06 02:56:17
回答 2查看 780关注 0票数 1

我正在进行的iOS和Android项目要求我们打开一个连接到第三方网站的3rd视图。问题是,我们调用的URL必须附带一些参数,这些参数使用带有ECB模式的Blowfish加密。

这个第三方使用PHP加密/解密参数,他们给了我他们用来进行加密和解密的代码。

基于此,在我的iOS项目中,我使用FclBlowfish库(https://github.com/cantecim/FclBlowfish)加密/解密数据。

做完所有的事情之后,加密/解密就不能正常工作了,而我刚刚发现的问题是,在进行了将近5个小时的工作后,在iOS中的加密几乎与PHP相同,但是由于河豚生成奇怪的字符,其中一些字符没有被iOS处理,这使得解密无法工作。

一个例子是:

在PHP中,我的加密字符串是p%FE& ¶4!ɢߟén™,但在iOS中,相同的加密字符串是p%FE&¶4!É¢ßén,正如您可以看到的那样,iOS缺少了Ÿ,这使得最终加密的字符串有所不同,因此PHP无法正确解密。

我在iOS上使用的代码是:

代码语言:javascript
复制
FclBlowfish *bf = [[FclBlowfish alloc] init];
bf.Key = @"MyK3yF8n";
bf.IV = @"aaassss";
[bf prepare];

[bf encrypt:@"21988882121" withMode:modeEBC withPadding:paddingZero]

这个库使用的加密/解密代码可以在:https://github.com/cantecim/FclBlowfish/blob/master/FclBlowfish.m上看到。

PHP中的代码是:

代码语言:javascript
复制
$initializationVectorSize = mcrypt_get_iv_size(MCRYPT_BLOWFISH, 'ecb');
$initializationVector = mcrypt_create_iv($initializationVectorSize, MCRYPT_RAND);

// Decrypt
$valor = $_GET['v'];
$valor = base64_decode($valor);

$valor = mcrypt_decrypt(MCRYPT_BLOWFISH, 'MyK3yF8n', $valor, 'ecb', $initializationVector);

print 'Valor: ' . $valor;

// Encrypt
$v = mcrypt_encrypt(MCRYPT_BLOWFISH, 'MyK3yF8n', $valor, 'ecb', $initializationVector);

print $v;

我希望有任何帮助,试图找出为什么iOS缺少一些牧师,使字符串不可解密的PHP。

谢谢!

更新

因此,我打开了NSISOLatin1StringEncoding代码,看到他们在加密和解密方法中使用了NSASCIIStringEncoding和FclBlowfish编码,然后我决定尝试其他一些方法,然后发现使用NSWindowsCP1252StringEncoding实际上返回正确的编码,因为PHP和解密就像一种魅力!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-03-06 03:38:59

井,

在重新阅读了我的帖子,看我是否忘记了任何信息后,我意识到,如果问题是编码,那么iOS库可能使用的是NSEncoding,这应该是不同的。

因此,我打开了NSISOLatin1StringEncoding代码,看到他们在加密和解密方法中使用了NSASCIIStringEncoding和FclBlowfish编码,然后我决定尝试其他一些方法,然后发现使用NSWindowsCP1252StringEncoding实际上返回正确的编码,因为PHP和解密就像一种魅力!

希望这能帮助有同样问题的人!

票数 2
EN

Stack Overflow用户

发布于 2015-03-06 07:33:34

IV必须有ascii字符。因此,您可以简单地对其进行base64编码以获取更多信息,我就您的问题写了一条评论:https://github.com/cantecim/FclBlowfish/issues/1#issuecomment-77517878

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28891658

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档