在我的应用程序中,我从xml获取数据,数据在xml中是加密的,我需要解密收到的nsstring,
UserName = @"QEjbHvzPjk+YuLDVPUJuEA==";
我需要将此nsstring解密为常规格式,我搜索并找到了aes,但它没有做任何更改,
NSString* msg = [FBEncryptorAES decryptBase64String:UserName
keyString:@"01234567890abcdefghijklmnopqrstuvwxyz"];
if (msg)
{
UserName = msg;
NSLog(@"decrypted: %@", msg);
} else
{
UserName = @"(failed to decrypt)";
}
我如何解密上面的nsstring,提前谢谢。
发布于 2013-12-24 14:16:34
该字符串不仅是AES加密的,而且是Base64编码的。尾随的"==“是典型的base64填充。此外,AES加密会生成数据字节,而不是ASCII字符,并且输出是块大小的倍数。通常对加密结果进行Base64编码,所以它是ASCII码,可以包含在XML语言中。
对于iOS 7,有几种用于NSData的Base64 API方法。也许你想要的是:
- (id)initWithBase64EncodedString:(NSString *)base64String options:(NSDataBase64DecodingOptions)options
示例:
NSString *userName = @"QEjbHvzPjk+YuLDVPUJuEA==";
NSData *data = [[NSData alloc] initWithBase64EncodedString:userName options:0];
NSLog(@"data: %@", data);
NSLog输出:
数据:<4048db1e fccf8e4f 98b8b0d5 3d426e10>
数据可能是AES加密的,它是块长度的倍数,如果是这样,您将需要密钥以及有关填充、模式和可能的iv的信息。
注意,FBEncryptorAES
类方法encryptedBase64String
确实接受Base64输入,但是解密密钥字符串是可疑的,并且由于方法和可能的iv,加密可能与该解密方法不匹配。因此,FBEncryptorAES
类可能不是您所需要的。
https://stackoverflow.com/questions/20762134
复制相似问题