我正在做一个项目,我们需要加密一些用户凭证(用户名、密码、userId等)。传递给我们的服务器。为了实现这一点,我们决定使用AES256。在这个问题上做一些研究很难避免注意到一个项目,RNCryptor声称这是一个易于使用的解决这个问题的解决方案。
因此,我把这个框架纳入了我的项目中,很快就意识到它并不像我想象的那么直接。我希望找到一个解决方案,通过- (1)派生一个密钥来加密我的凭据字符串,我想用该密钥加密我的字符串凭据,(2)将密钥和字符串传递到适当的RNCryptor方法(3),从该方法中检索我加密的字符串。
然而,这太好了,不可能是真的。
RNCryptor的现实是它有这样的方法:
[RNEncryptor encryptData:someData
withSettings:kRNCryptorAES256Settings
password:someString
error:&someError];由于术语的原因,这是令人困惑的。
密码是什么?
这一点从来没有解释过。什么密码?这是我想加密的用户密码,我想加密的密码密钥,还是登录到我的计算机的密码(讽刺)。
加密数据?
这是我要加密的用户凭据的UTF8编码字符串吗?这是我最好的猜测,但在RNCryptor Github“文档”中没有解释。
发布于 2016-11-18 21:25:47
password用于生成加密密钥,它是对数据进行加密的NSString。encryptData是要加密的数据,是NSData。
加密处理数据,一个8位字节的数组.您需要将您所拥有的一切转换为NSData。对于一个NSString,有以下方法:
NSData *dataToBeEncrypted = [myString dataUsingEncoding:NSUTF8StringEncoding];和
NSString *myString = [[NSString alloc] initWithData:decryptedData encoding:NSUTF8StringEncoding];此外,它需要一个加密密钥,RNCryptor接受一个NSString并从中派生一个加密密钥。
当然,也有一些选项,虽然大多数这些选项都是由RNCryptor在内部处理的,但是开发人员仍然可以使用它。
有两个主要版本有更多的选项,您可能最好使用密码版本。
一个使用NSString密码的人:
+ (NSData *)encryptData:(NSData *)data withSettings:(RNCryptorSettings)settings password:(NSString *)password error:(NSError **)error;第二次获取NSData加密密钥以及NSData身份验证密钥。
+ (NSData *)encryptData:(NSData *)data withSettings:(RNCryptorSettings)settings encryptionKey:(NSData *)encryptionKey HMACKey:(NSData *)HMACKey error:(NSError **)error;RNCryptor是您的最佳选择,它处理来自密码的密钥派生、随机IV、加密数据的身份验证和填充。
https://stackoverflow.com/questions/40685174
复制相似问题