【发布时间】:2010-11-27 22:07:42
【问题描述】:
我有一个 iPhone 应用程序,它使用 CCCrypt (AES256) 和明文密钥对输入的 NSString 进行加密。字符串和密钥被提供给返回 NSData 对象的加密方法。
请求 [data description] 其中 'data' 是加密的字符串数据会给出一个 NSString,例如:“”但是当我尝试将其转换为 NSString 时,我得到“(null )”。
我需要向用户返回一个 NSString,它可用于使用相同的明文密钥解密回原始字符串。如果 NSData 对象的 'description' 属性可以返回一个字符串,有什么方法可以从 NSData 对象生成一个 NSString 而不会得到“(null)”?
更新:感谢 Quinn,他建议使用 Base64 编码来生成混乱的字符串。据我了解,Base64 编码不是简单地交换字符,而是字符交换取决于位置,所以没关系。
我唯一担心的是,我希望能够使用“密码”对消息进行加密,并且在需要解码混乱的字符串时需要输入相同的密码 - 任何人都可以建议实现这一点的方法吗?
【问题讨论】:
-
我已更新我的答案以解决以下问题。你是对的,Base64 不是替代算法——它基本上将 3 个字节扩展为 4 个字节,因此编码数据是非编码数据的 1.37 倍。基本上,它需要 3 个 8 位块并将其重新划分为 4 个 6 位块,然后将每个块重新解释为 8 位块,可以很容易地用 ASCII 表示。维基百科有更多细节。
标签: iphone objective-c encryption nsstring nsdata