【发布时间】:2016-02-04 00:34:49
【问题描述】:
我正在使用http://aes.online-domain-tools.com 加密我的 NSString,我从中得到的是一个无符号字符数组,例如 c2 84 6b 71 72 6d d2 e7 cd 0b a6 08 cd 85 c3 0c。
然后在我的代码中使用它来将其转换为 NSString:
const unsigned char encrpytedAppIDbytes[] = {0xe5, 0x35, 0xdf, 0x72, 0x57, 0xaf, 0xf7, 0xe6, 0x1f, 0x6d, 0x51, 0x1d, 0x26, 0xe8, 0x5e, 0xa2};
NSData *appIDToDecrypt = [NSData dataWithBytes:encrpytedAppIDbytes length:sizeof(encrpytedAppIDbytes)];
NSString *decryptedAppID = [[NSString alloc] initWithData:[appIDToDecrypt AES128DecryptedDataWithKey:@"something"] encoding:NSUTF8StringEncoding];
if([decryptedAppID isEqualToString:@"Something"]){} // This fails even when i look at them in the debugger they are the same.
但是当我尝试解密它时,它显示为相同的字符串,但是当我将它与相同的 NSString 硬代码进行比较以检查它是否是相同的字符串时,它不起作用。 这未通过我在我的应用中进行的一些身份验证检查。
请指出我在这里做错了什么。
谢谢,
【问题讨论】:
-
显示比较代码。
-
请看我上面的编辑
-
里面好像有很多重复的代码。您使用即时创建的字符串记录,然后将
authUssernameTextfield.text设置为从数据创建的字符串。然后从 that 字符串创建一个 base-64 字符串。这是一团糟,答案在于对冗余代码的肆意过度重用。将其简化为最简单的术语,答案就会揭晓。 -
当我尝试在解密后进行比较时,它似乎失败了,所以问题似乎出在我尝试解密它时。你觉得这有什么问题吗?
-
如前所述,代码是一团糟。首先整理一下。
标签: ios objective-c encryption cryptography nsstringencoding