2

これが、これまで暗号化キーを生成してきた方法です。

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のみをサポートしているようです。それでは、古いコードベース(およびそれが作成したファイル)と下位互換性のある新しいコードを作成するにはどうすればよいですか?

4

1 に答える 1

1

私は解決策を見つけました。私には、OpenSSLがAppleの方法を使用して行うのとまったく同じ方法でキーを導出することは不可能のように思われます。代わりに、 http: //www.openssl.org/docs/crypto/EVP_BytesToKey.htmlページの「KeyDerivationAlgorithm」セクションでOpenSSLがキーと初期化ベクトルを導出する方法を読み、それを模倣する必要がありました。

于 2011-12-26T23:35:57.310 に答える