objective-c - 使用 CommonCrypto 生成加盐 key

标签 objective-c c security cryptography commoncrypto

这就是我到目前为止生成加密 key 的方式:

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_keyiv)以及给定的密码来加密我的数据。

既然有了 Lion,Apple 已经弃用了上述代码,我有以下问题:

问题:如何使用 CommonCrypto 做同样的事情?我刚刚遇到 CCKeyDerivationPBKDF() 函数。这是我要找的人吗?我看不出这是怎么回事,因为我没有得到任何“初始值”。我不知道如何将此 CommonCrypto 函数与旧方法进行比较。

特别是:这个新函数似乎甚至不支持 MD5 算法——只支持 SHA1。那么,我如何才能创建与我的旧代码库(及其创建的文件)向后兼容的新代码?

最佳答案

我找到了解决方案。对我来说,似乎不可能完全按照 OpenSSL 使用任何 Apple 方法的方式导出 key 。相反,我只需要阅读页面上的“ key 派生算法”部分中的 OpenSSL 如何派生 key 和初始化 vector http://www.openssl.org/docs/crypto/EVP_BytesToKey.html并简单地模仿它。

关于objective-c - 使用 CommonCrypto 生成加盐 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8621963/

相关文章:

ios - Google Analytics 未针对 64 位架构构建(v 3.03)

ios - 使用 CAGradientLayer 定义渐变的角度

java - 使用 nar-maven-plugin 将外部 .so 库添加到 jni 项目

c# - 适合在沙箱中运行客户端代码的语言

ios - .ipa 在 iPad 上崩溃

ios - 将数学方程转换为字符串

c - sizeof(size_t) < sizeof(unsigned int) 的实际实现

c++ - 库函数的新实现并在其中调用旧实现

java - Android 中的应用程序许可与复制保护

java - 安全的 Java Web 服务