我正在通过服务器(BLOWFISH ALGORITHM)接收加密数据,我必须在 IOS 中使用河豚算法对其进行解密。
你可以从这里下载我的代码:https ://www.dropbox.com/s/nswsm7des7isgd5/BlowfishTest-4.zip
我从 2 天开始就为这项任务苦苦挣扎,我尝试了很多链接,但发现很少有用:
- 河豚源代码
- 如何在 iOS 中实现 Blowfish 算法
- http://www.coded.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 加密,并转换为十六进制表示法。