首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >试着理解RNCryptor

试着理解RNCryptor
EN

Stack Overflow用户
提问于 2016-11-18 20:06:06
回答 1查看 620关注 0票数 1

我正在做一个项目,我们需要加密一些用户凭证(用户名、密码、userId等)。传递给我们的服务器。为了实现这一点,我们决定使用AES256。在这个问题上做一些研究很难避免注意到一个项目,RNCryptor声称这是一个易于使用的解决这个问题的解决方案。

因此,我把这个框架纳入了我的项目中,很快就意识到它并不像我想象的那么直接。我希望找到一个解决方案,通过- (1)派生一个密钥来加密我的凭据字符串,我想用该密钥加密我的字符串凭据,(2)将密钥和字符串传递到适当的RNCryptor方法(3),从该方法中检索我加密的字符串。

然而,这太好了,不可能是真的。

RNCryptor的现实是它有这样的方法:

代码语言:javascript
复制
[RNEncryptor encryptData:someData 
            withSettings:kRNCryptorAES256Settings
                password:someString
                   error:&someError];

由于术语的原因,这是令人困惑的。

密码是什么?

这一点从来没有解释过。什么密码?这是我想加密的用户密码,我想加密的密码密钥,还是登录到我的计算机的密码(讽刺)。

加密数据?

这是我要加密的用户凭据的UTF8编码字符串吗?这是我最好的猜测,但在RNCryptor Github“文档”中没有解释。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-18 21:25:47

password用于生成加密密钥,它是对数据进行加密的NSStringencryptData是要加密的数据,是NSData

加密处理数据,一个8位字节的数组.您需要将您所拥有的一切转换为NSData。对于一个NSString,有以下方法:

代码语言:javascript
复制
NSData *dataToBeEncrypted = [myString dataUsingEncoding:NSUTF8StringEncoding];

代码语言:javascript
复制
NSString *myString = [[NSString alloc] initWithData:decryptedData encoding:NSUTF8StringEncoding];

此外,它需要一个加密密钥,RNCryptor接受一个NSString并从中派生一个加密密钥。

当然,也有一些选项,虽然大多数这些选项都是由RNCryptor在内部处理的,但是开发人员仍然可以使用它。

有两个主要版本有更多的选项,您可能最好使用密码版本。

一个使用NSString密码的人:

代码语言:javascript
复制
+ (NSData *)encryptData:(NSData *)data withSettings:(RNCryptorSettings)settings password:(NSString *)password error:(NSError **)error;

第二次获取NSData加密密钥以及NSData身份验证密钥。

代码语言:javascript
复制
+ (NSData *)encryptData:(NSData *)data withSettings:(RNCryptorSettings)settings encryptionKey:(NSData *)encryptionKey HMACKey:(NSData *)HMACKey error:(NSError **)error;

RNCryptor是您的最佳选择,它处理来自密码的密钥派生、随机IV、加密数据的身份验证和填充。

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

https://stackoverflow.com/questions/40685174

复制
相关文章

相似问题

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