【发布时间】:2014-05-08 08:47:15
【问题描述】:
我正在构建一个将与服务器 (php) 通信的应用程序,并且我想加密这种通信(可能会使用 json)。经过大量搜索和阅读,我找到了AESCrypt-Objc 项目。 在测试加密时(我正在使用网络工具AES Encryption test),我发现在加密结果中我丢失了 16 个字节的数据。 这是我正在使用的示例 在 AES 项目中:
要加密的字符串:“敏捷的棕狐跳过了懒狗”。 密码:“12345678901234561234567890123456”
结果:
我的代码:
self.strnToBeEnc = @"The quick brown fox jumped over the lazy dog";
self.appKey = @"12345678901234561234567890123456";
NSData *data2 = [self.strnToBeEnc dataUsingEncoding:NSUTF8StringEncoding];
NSLog(@"%@", data2);
NSData *s2 = [data2 AES256EncryptedDataUsingKey:self.appKey error:nil];
NSLog(@"%@", s2);
WEB工具:
相同的字符串和密码
结果:
如您所见,我缺少一些字节...:) 我尝试在算法中添加缓冲区,但没有成功。
有什么建议吗? 谢谢
(如果问题不够详细,请告诉我)
【问题讨论】:
-
你用的是什么代码,或者你试过了吗?看起来好像您没有加密数据的最后 128 位块,或者根本不显示它。输入为 352 位,这意味着使用填充后,您的输出应不少于 3 x 128 位 AES 块长!
-
我正在使用 AES256EncryptedDataUsingKey:error:error; NSData+CommonCrypto.h 中的方法
-
self.strnToBeEnc = @"敏捷的棕狐跳过了懒狗"; self.appKey = @"12345678901234561234567890123456"; NSData *data2 = [self.strnToBeEnc dataUsingEncoding:NSASCIIStringEncoding]; NSLog(@"%@", data2); NSData *s2 = [data2 AES256EncryptedDataUsingKey:self.appKey error:nil]; NSLog(@"%@", s2);
-
只是创建字符串,转换为数据,加密数据,然后 NSLog 结果
-
出于好奇,我看到网络上的每个人都使用
NSUTF8StringEncoding而不是NSASCIIStringEncoding。这给了你什么?
标签: ios objective-c encryption aes commoncrypto