Erstellen zufällige 128-bit-AES-Verschlüsselung-Schlüssel in iOS
Möchte ich Erzeuge zufälligen AES Encryption key (128 bit) in ios. Ich habe gesucht, SO aber ich finde keine gute Antwort. Bitte geben Sie mir einige Ratschläge. vielen Dank im Voraus.
UPDATE:
Habe ich verwendet BBAES lib. Ich verwendete den folgenden code zum generieren des Verschlüsselungsschlüssels, aber wenn ich konvertieren von NSData zu NSString, es zeigt NULL
-(NSData*)randomDataWithLength{
NSData* salt = [BBAES randomDataWithLength:BBAESSaltDefaultLength];
NSData *key = [BBAES keyBySaltingPassword:@"password" salt:salt keySize:BBAESKeySize128 numberOfIterations:BBAESPBKDF2DefaultIterationsCount];
NSLog(@"Data ASE Key %@",key);
NSString *aString = [[NSString alloc] initWithData:key encoding:NSUTF8StringEncoding];
}
- Siehe stackoverflow.com/questions/9234686/...
- Es gibt viele, viele Bibliotheken zu helfen, mit diesem.
- Ich aktualisiert meine Frage.
- warum Sie wollen, es zu konvertieren, um NSString? und es ist
NULL
weil nicht jede zufällige Daten sind gültige UTF8-string
Du musst angemeldet sein, um einen Kommentar abzugeben.
Woah, das ist kompliziert-code für eine einfache Aufgabe!
Du wahrscheinlich irgendwo gehört, dass Sie verwenden sollten, salt und hash-Passwörter. Es sieht aus wie Sie nahm diesen Rat ein wenig zu weit: es gibt keine Passwörter und hier noch dein code noch Salzen und hashes die Daten! Das ist völlig nutzlos, wenn der input kommt von einem secure random number generator wie
arc4random
.Natürlich ist es nicht konvertieren, um eine
NSString
weil zufällige Daten ist es unwahrscheinlich, gültig UTF-8-string.SecRandomCopyBytes
ist die RNG-Funktion für AES-Schlüssel.Möchten Sie vielleicht, um die Verwendung von Apple ' s random byte-generator, die als sicherer betrachtet als arc4random.
https://developer.apple.com/library/ios/documentation/Security/Reference/RandomizationReference/index.html#//apple_ref/c/func/SecRandomCopyBytes
Eine gute Erklärung dafür gefunden werden kann, die auf einen blog-post von James Carroll:
http://jamescarroll.xyz/2015/09/09/safely-generating-cryptographically-secure-random-numbers-with-swift/
Open Whisper Systems verwenden Sie diese für die iOS-version Ihrer beliebten sicheren chat-app Signal
Dies könnte helfen,
time()
—eigentlich ist es eine sichere RNG und ziemlich langsam im Vergleich zu anderen RNGs, und es ist die richtige Wahl für die Schlüssel-Generierung. Jedoch, Sie sind richtig über die modulo-bias.arc4random() % range
wird es einige modulo-bias, verwenden Siearc4random_uniform(range)
.