Ceci est mon code Java. Maintenant, je veux mettre en œuvre la même fonctionnalité dans Objective-C.Implémentation du cryptage PBEKeySpec dans 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();
Ceci est mon application iOS
- (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);
}
est-il un problème avec l'algorithme que j'utilise dans iOS
merci de votre préoccupation .i avez modifié ma question s'il vous plaît me faire savoir si je fais une mauvaise –
@ Zaph, est-il un problème si j'utilise 1000? –
si j'ai besoin de voir la même chaîne dans android devrais-je convertir en base64? –