Как конвертировать CCKeyDerivationPBKDF в Xamarin.iOS?
У меня есть метод ObjC ниже, и я хотел бы вызвать do port для управляемого кода, но не знаю, с чего начать. Кто-нибудь может помочь?
- (NSData *)deriveKey
{
NSData *passphrase = [self.passwordField.stringValue dataUsingEncoding:NSUTF8StringEncoding];
NSData *salt = [self.saltField.stringValue dataUsingEncoding:NSUTF8StringEncoding];
NSMutableData *key = [NSMutableData dataWithLength:kCCKeySizeAES256];
CCKeyDerivationPBKDF(kCCPBKDF2,
[passphrase bytes],
[passphrase length],
[salt bytes],
[salt length],
kCCPRFHmacAlgSHA256,
PBKDFNumberOfRounds,
[key mutableBytes],
[key length]);
return key;
}
1 ответ
Решение
В.NET PKCS#5v2 (которая определяет PBKDF2) поддержка доступна с помощью Rfc2898DeriveBytes
, Однако это не позволяет выбрать алгоритм хеширования.
var salt = new byte [32]; // do not use it empty :)
var key = new Rfc2898DeriveBytes ("passphrase", salt, 1000).GetBytes (length);