【发布时间】:2013-10-02 15:13:22
【问题描述】:
我正在通过服务器(BLOWFISH ALGORITHM)接收加密数据,我必须使用 IOS 中的河豚算法对其进行解密。
你可以从这里下载我的代码:https://www.dropbox.com/s/nswsm7des7isgd5/BlowfishTest-4.zip
我已经为这个任务苦苦挣扎了 2 天,我尝试了很多链接并发现一些有用的链接:
- Blowfish Source code
- How to implement Blowfish algorithm in iOS
- http://www.codeding.com/articles/blowfish-encryption-algorithm-for-iphone
在第三个链接中,我得到了 ECB(我必须使用 ECB 解密)。但是这段代码在解密后也没有给出正确的输出。
我正在使用在线工具进行测试,这显示了正确的输出:http://www.tools4noobs.com/online_tools/decrypt/
Key = 20zE1E47BE57$51
Input value is = aed5c110d793f850521a4dd3a56a70d9
Algorithm = BLOWFISH
Mode = ECB
Decode the input using= Hexa
output = aYzY1380188405 ( this is correct output which i want)
我得到:¹àÀhÒ¢º¹iÂF
这是我的代码:
//Mode selected by default in nib: “ECB”
NSString *modeString = [encryptionModeControl titleForSegmentAtIndex:encryptionModeControl.selectedSegmentIndex];
BlowfishAlgorithm *blowFish = [BlowfishAlgorithm new];
[blowFish setMode:[BlowfishAlgorithm buildModeEnum:modeString]];
[blowFish setKey:key];
[blowFish setInitVector:initVector];
[blowFish setupKey];
NSString *cipherText = cipherTextView.text;
NSString *plainText = [blowFish decrypt:cipherText];
NSLog(@"cipher-text: %@", cipherText);
NSLog(@"plain-text: %@", plainText);
注意:服务器端数据在 ECB 模式下使用 BLOWFISH 加密,并转换为十六进制表示法。
【问题讨论】:
-
请显示一些代码。没有正确处理编码和填充是最常见的错误。
-
@MarcusAdams 你可以从这里下载我的代码:dropbox.com/s/nswsm7des7isgd5/BlowfishTest-4.zip
-
您是否有理由使用第三方的 Blowfish 实现而不是 Apple 的 CommonCrypto API?
-
@QueueOverFlow:你应该问一个单独的问题,显示你的 CommonCrypto 代码,以及你给它的输入和你期望的输出。
-
您确定输出正确吗?在找到 Pandora api 实现后,我尝试管理示例应用程序并得到以下输出: ---使用此代码行--- NSLog(@"%@", [self PandoraDecrypt:@"aed5c110d793f850521a4dd3a56a70d9"] );
标签: ios objective-c blowfish