RNCryptor密码加密

RNCryptor密码加密

问题描述:

我以下面的代码为例。请帮助我,如果我错了。RNCryptor密码加密

- (void)storeToKeychain { 

kPassword = [self computeSHA256DigestForString:[NSString stringWithFormat:@"%@%i%@", [username stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding], pinHash, SALT_HASH]; 


NSData *data = [@"Data" dataUsingEncoding:NSUTF8StringEncoding]; 
NSError *error; 
NSData *encryptedData = [RNEncryptor encryptData:data 
           withSettings:kRNCryptorAES256Settings 
             password:kPassword 
             error:&error]; 
} 

- (NSString*)computeSHA256DigestForString:(NSString*)input { 

const char *cstr = [input cStringUsingEncoding:NSUTF8StringEncoding]; 
NSData *data = [NSData dataWithBytes:cstr length:input.length]; 
uint8_t digest[CC_SHA256_DIGEST_LENGTH]; 

// This is an iOS5-specific method. 
// It takes in the data, how much data, and then output format, which in this case is an int array. 
CC_SHA256(data.bytes, data.length, digest); 

// Setup our Objective-C output. 
NSMutableString* output = [NSMutableString stringWithCapacity:CC_SHA256_DIGEST_LENGTH * 2]; 

// Parse through the CC_SHA256 results (stored inside of digest[]). 
for(int i = 0; i < CC_SHA256_DIGEST_LENGTH; i++) { 
    [output appendFormat:@"%02x", digest[i]]; 
} 

return output; 
} 

我的应用程序有一个设置和登录页面。每当用户创建一个帐户,我想要密码存储在加密的钥匙串中,我应该做用户名以增加安全性。所以我想在用户创建账户时使用RNCryptor加密钥匙串中用户的用户名和密码。

我不确定在RNEcryptor方法中使用kPassword的密码。我原本以为使用由UUID, username and a random 40 character salt hash组成的SHA256散列将密码加密到钥匙串中。我后来发现RNCryptor,我想知道是否可以使用SHA256 hash作为kPassword还是有其他的选择吗?

+0

是你想节省自己的应用程序中使用/商店*** ***所有用户密码,或者只是那些,还是? –

+0

我只想将用户创建的帐户密码存储到钥匙串中,以便我可以用于本地网络网页和自动登录到应用程序。 – Omar

+0

此处没有任何内容访问钥匙串(您计算密码,加密字符串“Data”然后丢弃结果)。目前还不清楚为什么你在这里进行哈希或加密。如果你想在钥匙串中存储东西,那么有很多好的钥匙串包装可用。例如:https://github.com/secondgear/SGKeychain和https://github.com/nicklockwood/FXKeychain。 –

试试这个

https://github.com/Gurpartap/AESCrypt-ObjC

添加AESCrypt-ObjC主现在这些添加到顶部

#import "AESCrypt.h" 

然后将这些

NSString *message = @"yourStringtobeencrypted"; 
NSString *password = @"yourpassword"; 
NSString *encryptedData = [AESCrypt encrypt:message password:password]; 

而且你去那里。 。解密

NSString *message1 = [AESCrypt decrypt:encryptedData password:password]; 

:-)