これが、これまで暗号化キーを生成してきた方法です。
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);
結果はキーと「初期値」です。次に、これら2つ(evp_key
およびiv
)を指定された暗号とともに使用して、データを暗号化できます。
さて、Lionで、Appleは上記のコードを廃止したので、私は次の質問があります。
質問: CommonCryptoで同じことを行うにはどうすればよいですか?私はちょうどその機能に出くわしましたCCKeyDerivationPBKDF()
。これは私が探しているものですか?「初期値」が返ってこないので、どうなるかわかりません。このCommonCrypto関数を古いメソッドと比較する方法がわかりません。
特に、この新しい関数はMD5アルゴリズムをサポートしていないようで、SHA1のみをサポートしているようです。それでは、古いコードベース(およびそれが作成したファイル)と下位互換性のある新しいコードを作成するにはどうすればよいですか?