字符串的加密 AES PBKDF2

6

我对加密技术比较陌生,尝试过各种类型的加密技术,但客户特别想要使用PBKDF2加密技术。有什么帮助吗?


1
这是“encryption”,而不是“enscryption” :) 此外,如果没有扎实的加密知识处理密码学可能会导致巨大的失败。你应该请一个外部顾问或同事来帮助你。 - Stefano Sanfilippo
另外,请缩小范围。您在哪里需要使用 PBKDF2 - Stefano Sanfilippo
2
告诉客户他们需要聘请一个密码安全领域专家。 - zaph
1
@Stefane 个人而言,从安全角度来看,我并不认为需要使用AES256而非AES128。但是,我进行了一些计时,在某些平台上,AES256比AES128更快!因此,AES256确实是一个不错的选择。 - zaph
1
我理解这一点,但时间也很重要。还有其他因素在起作用,例如硬件AES辅助指令,它们可能偏向于256。以下是我的Mac上的一些时间:AES128迭代:100000:865.949毫秒,AES256迭代:100000:854.222毫秒。256并不总是更快。 代码片段:CCCrypt(encryptOrDecrypt,                        kCCAlgorithmAES,                        kCCOptionPKCS7Padding,                        symmetricKey.bytes,                        kCCKeySizeAES256 - zaph
显示剩余5条评论
1个回答

6
PBKDF2是一种从密码创建安全加密密钥的方法。 PBKDF2代表“基于密码的密钥派生函数2”。
您还需要提供轮数,请参见PBKDF2校准。 AES是一种加密方法。 AES代表“高级加密标准”。
您还需要处理以下其他事项:
  • 加密模式
  • IV(初始化向量)
  • 填充
  • 密钥大小
iOS CommonCrypto支持PBKDF2AES
您需要执行两个步骤:
  1. 使用PBKDF2从密码字符串创建加密密钥。
  2. 然后使用加密密钥加密数据。
最后,您需要保护加密密钥。

5
你不能“保护”加密密钥:你必须删除它!你需要保留盐和 PBKDF2 轮数的信息与加密后的消息一起(这些不是机密)。然后可以再次使用密码作为输入运行 PBKDF2 以重新生成密钥进行解密。 - Erwan Legrand
是的,这是正确的。有些情况下需要多次使用密钥。我曾经进行过全盘加密,其中加密是按扇区进行的。用户在会话期间被要求登录一次。在会话期间,将使用该密钥。 - zaph

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接