2014-03-02 4 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 hashkPassword으로 사용할 수 있는지 궁금하거나 다른 대안이 있습니까?

+0

당신은 당신의 자신의 응용 프로그램에서 사용/저장 *** 모든 *** 사용자 암호, 아니면 그냥 사람을 구하려고, 또는입니까? –

+0

사용자가 키 체인에 생성 한 계정의 암호를 암호화하여 로컬 네트워크 웹 페이지와 응용 프로그램에 자동 로그인 할 수 있도록 저장하려고합니다. – Omar

+0

여기에 아무것도 키 체인에 액세스하지 않습니다 (암호를 계산하고 "데이터"문자열을 암호화 한 다음 결과를 버립니다). 왜 여기서 해싱하거나 암호화하는지 명확하지 않습니다. 키 체인에 물건을 저장하려면 좋은 키 체인 래퍼가 충분히 있어야합니다. 예 : https://github.com/secondgear/SGKeychain 및 https://github.com/nicklockwood/FXKeychain. –

답변

3

그런 다음 이동이

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

그리고 거기에 추가 지금 상단

#import "AESCrypt.h" 

에 추가 할이

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

에서 AESCrypt - ObjC 마스터를 추가하십시오. 복호화를 위해

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

:-)