2014-03-02 70 views
1

我以下面的代碼爲例。請幫助我,如果我錯了。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。 –

回答

3

試試這個

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]; 

:-)