2014-01-08 8 views
0

ZXingWidget lib를 사용하여 QR 코드 이미지를 스캔하고 응답 문자열을 받았습니다. 이제 iOS에서 lib-sodium을 사용하여 해당 문자열을 암호화하고 싶습니다.iOS에서 lib-sodium을 사용하여 문자열을 암호화하는 방법

lib-sodium 라이브러리 .... 사전에 감사를 사용하여 아이폰 OS에서 문자열 암호화를 수행하는 방법 어떤 제안 ... 요청으로

+0

왜 lib-sodium입니까? 그것의 어떤면이 특별히 흥미로운가? CommonCrypto 만 사용하는 "문자열 암호화"가 필요하다면 Rob Napier의 [RNCryptor] (https://github.com/RNCryptor/RNCryptor)를 비롯한 몇 가지 좋은 래퍼가 있습니다. – zaph

+0

요구 사항 – user3168665

+0

RNCryptor는 ASE를 사용하여 간단한 문자열 암호화를 공유 할 수 있습니다 ... – user3168665

답변

0

: PBKDF

주를 구현하는 방법에 대한 샘플 코드는,이, 예입니다 생산 코드가 아닙니다.

#import <CommonCrypto/CommonKeyDerivation.h> 
+ (NSData *)doKeyForPassword:(NSString *)password 
         salt:(NSData *)salt 
        keySize:(NSUInteger)keySize 
         rounds:(NSUInteger)rounds { 
    NSMutableData *derivedKey = [NSMutableData dataWithLength:keySize]; 

    NSData *passwordData = [password dataUsingEncoding: NSUTF8StringEncoding]; 

    CCKeyDerivationPBKDF(kCCPBKDF2, // algorithm 
     passwordData,    // password 
     passwordData,    // passwordLength 
     salt.bytes,    // salt 
     salt.length,    // saltLen 
     kCCPRFHmacAlgSHA1,   // PRF 
     rounds,     // rounds 
     derivedKey.mutableBytes, // derivedKey 
     derivedKey.length);  // derivedKeyLen 

    return derivedKey; 
} 

아주 간단한 테스트, 더 나은 소금 를 사용하여 더 나은 라운드 CCCalibratePBKDF를 사용 가능한 계산합니다.

- (void)test_doKeyForPassword { 
    NSData *key = [Crypto doKeyForPassword:@"password" 
             salt:[@"salt" dataUsingEncoding:NSUTF8StringEncoding] 
            keySize:kCCKeySizeAES128 
            rounds:1000]; 
    NSLog(@"doKeyForPassword: %@",key); 
} 

프로덕션 응용 프로그램에서이 코드를 복사하는 경우 : 수행하지 마십시오. 이것은 단지 예제 코드 일 뿐이다. 기본적으로이 코드가 필요한 경우 암호화를해서는 안됩니다. 도메인 전문가를 고용하십시오. 적어도 도메인 전문가가 심사하는 코드가 있어야합니다.