首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用aes时ios 7中的解密不起作用

使用aes时ios 7中的解密不起作用
EN

Stack Overflow用户
提问于 2013-12-24 21:50:56
回答 1查看 655关注 0票数 1

在我的应用程序中,我从xml获取数据,数据在xml中是加密的,我需要解密收到的nsstring,

代码语言:javascript
代码运行次数:0
运行
复制
 UserName = @"QEjbHvzPjk+YuLDVPUJuEA==";

我需要将此nsstring解密为常规格式,我搜索并找到了aes,但它没有做任何更改,

代码语言:javascript
代码运行次数:0
运行
复制
  NSString* msg = [FBEncryptorAES decryptBase64String:UserName
                                          keyString:@"01234567890abcdefghijklmnopqrstuvwxyz"];

if (msg)
{
    UserName = msg;

    NSLog(@"decrypted: %@", msg);
} else
{
    UserName = @"(failed to decrypt)";
}

我如何解密上面的nsstring,提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2013-12-24 22:16:34

该字符串不仅是AES加密的,而且是Base64编码的。尾随的"==“是典型的base64填充。此外,AES加密会生成数据字节,而不是ASCII字符,并且输出是块大小的倍数。通常对加密结果进行Base64编码,所以它是ASCII码,可以包含在XML语言中。

对于iOS 7,有几种用于NSData的Base64 API方法。也许你想要的是:

代码语言:javascript
代码运行次数:0
运行
复制
- (id)initWithBase64EncodedString:(NSString *)base64String options:(NSDataBase64DecodingOptions)options

示例:

代码语言:javascript
代码运行次数:0
运行
复制
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类可能不是您所需要的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20762134

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档