Questo è il mio codice java. Ora voglio implementare la stessa funzionalità in Objective-C.implementazione della crittografia PBEKeySpec 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();
Questa è la mia implementazione 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);
}
C'è qualche problema con l'algoritmo che sto utilizzando in iOS
ringraziare il vostro per la vostra preoccupazione .i hanno modificato la mia domanda per favore fatemelo sapere se sto facendo alcun torto –
@ zaph, c'è qualche problema se io uso 1000? –
se ho bisogno di vedere la stessa stringa in Android dovrei convertire in base64? –