다음 코드를 예제로 사용합니다. 제발 내가 잘못하면 도와주세요.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
으로 사용할 수 있는지 궁금하거나 다른 대안이 있습니까?
당신은 당신의 자신의 응용 프로그램에서 사용/저장 *** 모든 *** 사용자 암호, 아니면 그냥 사람을 구하려고, 또는입니까? –
사용자가 키 체인에 생성 한 계정의 암호를 암호화하여 로컬 네트워크 웹 페이지와 응용 프로그램에 자동 로그인 할 수 있도록 저장하려고합니다. – Omar
여기에 아무것도 키 체인에 액세스하지 않습니다 (암호를 계산하고 "데이터"문자열을 암호화 한 다음 결과를 버립니다). 왜 여기서 해싱하거나 암호화하는지 명확하지 않습니다. 키 체인에 물건을 저장하려면 좋은 키 체인 래퍼가 충분히 있어야합니다. 예 : https://github.com/secondgear/SGKeychain 및 https://github.com/nicklockwood/FXKeychain. –