Использование CommonCrypto для генерации соленого ключа

Вот как я генерировал свои криптографические ключи до сих пор:

unsigned char *salt; //8 salt bytes were created earlier
unsigned char *password; //password was obtained earlier
int passwordLength; //password length as well

unsigned char evp_key[EVP_MAX_KEY_LENGTH] = {"\0"};
unsigned char iv[EVP_MAX_IV_LENGTH];

EVP_BytesToKey(cipher, EVP_md5(), salt, password,  //cipher is also given
               passwordLength,
               1, evp_key, iv);

Результатом является ключ и "начальное значение". Затем я могу использовать эти два (evp_key а также iv) вместе с данным шифром для шифрования моих данных.

Теперь, когда Lion, Apple устарела вышеупомянутый код, у меня есть следующий вопрос:

Вопрос: Как мне сделать то же самое с CommonCrypto? Я только что натолкнулся на CCKeyDerivationPBKDF() функция. Это тот, кого я ищу? Я не вижу, как это происходит, так как я не получаю никакого "начального значения" обратно. Я не знаю, как сравнить эту функцию CommonCrypto со старым методом.

В частности: эта новая функция, кажется, даже не поддерживает алгоритм MD5 - только SHA1. Как тогда я могу создать новый код, обратно совместимый с моей старой кодовой базой (и файлами, которые он создал)?

1 ответ

Решение

Я нашел решение. Мне кажется, невозможно получить ключи точно так, как это делает OpenSSL, используя любые методы Apple. Вместо этого мне просто нужно было прочитать, как OpenSSL получает ключ и вектор инициализации в разделе "Алгоритм получения ключа" на странице http://www.openssl.org/docs/crypto/EVP_BytesToKey.html и просто подражать этому.

Другие вопросы по тегам