Das ist mein Java-Code. Jetzt möchte ich dieselbe Funktionalität in Objective-C implementieren.Implementierung der PBEKeySpec-Verschlüsselung in IOS
int dkLen = 16;
int rounds = 1000;
PBEKeySpec keySpec = new PBEKeySpec(hashKey.toCharArray(),salt.getBytes(), rounds, dkLen * 8);
SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
return factory.generateSecret(keySpec).getEncoded();
Das ist meine iOS Implementierung
- (void)getHashKey {
NSString *[email protected]"MY_HASHKEY";
NSString *saltKey = @"MY_SALTKEY";
int dkLen = 16;
NSData *keyData = [hash_key dataUsingEncoding:NSUTF8StringEncoding];
NSData *salt = [saltKey dataUsingEncoding:NSUTF8StringEncoding];
uint rounds = 1000;
uint keySize = kCCKeySizeAES128;
NSMutableData *derivedKey = [NSMutableData dataWithLength:keySize];
CCKeyDerivationPBKDF(kCCPBKDF2, // algorithm
keyData.bytes, // password
keyData.length, // passwordLength
salt.bytes, // salt
salt.length, // saltLen
kCCPRFHmacAlgSHA1, // PRF
rounds, // rounds
derivedKey.mutableBytes, // derivedKey
dkLen*8); // derivedKeyLen
NSString *myString = [[NSString alloc] initWithData:derivedKey encoding:NSASCIIStringEncoding];
NSLog(@"derivedKey: %@", myString);
}
Gibt es irgendein Problem mit Algorithmus, die ich in iOS bin
Ihr für Ihr Interesse danken .i meine Frage bearbeitet haben Sie mich bitte, wenn ich jede falsche –
@ Zaph tun, ist es ein Problem, wenn ich 1000 verwenden? –
Wenn ich dieselbe Zeichenfolge in Android sehen muss, sollte ich in base64 konvertieren? –