2
这是怎么了,我一直产生我的密钥至今:“初始值”使用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
)以及给定的密码来加密我的数据。
现在与狮子,苹果已经过时了上面的代码,我有以下问题:
问题:我要如何做同样的事情CommonCrypto?我刚刚遇到了CCKeyDerivationPBKDF()
函数。这是我要找的那个吗?我不明白这是怎么回事,因为我没有得到任何“初始价值”。我不知道如何将这个CommonCrypto函数与旧方法进行比较。
特别是:这个新功能似乎甚至不支持MD5算法 - 只有SHA1。那么,我可以如何创建与旧代码库(及其创建的文件)向后兼容的新代码?
另请参见[密码到与OpenSSL命令兼容的键功能](http://stackoverflow.com/q/9488919/608639),它提供了C和Swift中的代码。另一个问题似乎是一个重复,但它有代码很好的答案。我认为它为未来的访客增加了更多的价值。 – jww 2016-07-15 18:54:15
[OpenSSL 1.1.0c更改了摘要算法](http://stackoverflow.com/q/39637388/608639)在某些内部组件中使用。以前使用MD5,1.1.0切换到SHA256。请注意,这些更改不会影响'EVP_BytesToKey'和像'openssl enc'这样的命令。 – jww 2017-01-26 16:30:55