我正在尝试使用'AES-128 CBC with IV'加密字符串。下面是输入参数和预期的输出:
在IV中,AES-128 CBC加密如何在Objective-C中工作?
键: 000102030405060708090A0B0C0D0E0F
IV: 00102030405060708090A0B0C0D0E0F0
输入数据: EA010B23CDA9B16F0001020304050607
输出: B773C36749E87D3F8FED98FE52026A15
如何在目标C IV采用AES-128 CBC字符串加密? (与http://extranet.cryptomathic.com/aescalc的结果相同)我试图获取加密的字符串 - B773C36749E87D3F8FED98FE52026A15,但没有运气。
我曾尝试使用这个库的加密:https://github.com/Pakhee/Cross-platform-AES-encryption/tree/master/iOS
这是我的目标C代码:
NSString* data = @"EA010B23CDA9B16F0001020304050607";
NSString* key = @"000102030405060708090A0B0C0D0E0F";
NSString* iv = @"00102030405060708090A0B0C0D0E0F0";
NSData *encryptedData = [[StringEncryption alloc] encrypt:[@"EA010B23CDA9B16F0001020304050607" dataUsingEncoding:NSUTF8StringEncoding] key:key iv:iv];
NSLog(@"encryptedData %@", encryptedData);
的EncryptedData的输出是: < 68f8ed75 e79f2ba2 c80e67a2 f0c84b7a c4b07fd1 59e937e5 14644cba c0ddb60c 40502375 7798e7a1 58bd05a5 b3d9e7bd>
我期待*的EncryptedData的值应该是< 42373733 43333637 34394538 37443346 38464544 39384645 35323032 36413135>,这是B773C36749E87D3F8FED98FE52026A15
我曾尝试另一个库六角 - https://github.com/dev5tec/FBEncryptor
NSData* _data = [data dataUsingEncoding:NSUTF8StringEncoding];
NSData* _key = [key dataUsingEncoding:NSUTF8StringEncoding];
NSData* _iv = [iv dataUsingEncoding:NSUTF8StringEncoding];
NSData *encryptedData2 = [FBEncryptorAES encryptData:_data key:_key iv:_iv];
NSLog(@"encryptedData2 = %@", encryptedData2);
输出为< 2beea977 aef69eb1 ed9f6dd0 7bf5f1ce d1e5df46 2cbf8465 773f122d 03267abb 2e113d9b 07189268 4fd6babe 7b1c0056>
看来我使用了错误的库或者我输入了错误的加密函数。针对客观c的AES库的任何建议?
你的意思是:http://stackoverflow.com/questions/7520615/how-to-convert-an-nsdata-into-an-nsstring-hex-string? – Larme
感谢Larme,我试过将NSData转换为NSString的例子。但它会返回怪兽角色,例如>èaμ[ü#Õ-ÅÄ ,o v®ÊØqÈÈËl〜〜。我不确定我的问题是NSData转换还是我以错误的方式使用了库 –
你是怎么做到的?你有没有试过:'NSUInteger容量= encryptedData.length * 2; NSMutableString * sbuf = [NSMutableString stringWithCapacity:capacity]; const unsigned char * buf = encryptedData.bytes; NSInteger i; for(i = 0; i
Larme