Как конвертировать 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);
Другие вопросы по тегам