0

QRlibを使用してコード イメージをスキャンし、ZXingWidget応答として文字列を受け取りました。lib-sodium今、iOS で使用してその文字列を暗号化したいと考えています。

ライブラリを使用してiOSで文字列の暗号化を行う方法についての提案lib-sodium....よろしくお願いします...

4

1 に答える 1

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);
}

本番アプリで使用するためにこのコードをコピーする場合: しないでください。これは単なるコード例です。基本的に、このコードが必要な場合、暗号化を行うべきではありません。ドメインの専門家を雇って、少なくともドメインの専門家にコードを精査してもらいます。

于 2014-01-10T12:36:28.083 に答える