Encryption 将秘密本身作为密钥加密(使用salt)是否存在重大风险?

Encryption 将秘密本身作为密钥加密(使用salt)是否存在重大风险?,encryption,encryption-symmetric,Encryption,Encryption Symmetric,我想在数据库中存储加密的用户密码。我需要使用双向对称加密,例如AES(在这种特殊情况下,使用散列不是选项) 第一部分 使用需要加密的字符串作为密钥是否会显著增加风险?如果有必要,将向密钥添加一个公共可用(同一行)盐 第二部分 相同的问题,但适用于以下场景: A使用B作为密钥(包括salt)进行加密,并且 B用A作为密钥加密(包括salt) 两个加密值都存储在同一数据库行中。第1部分 只要您的字符串密码足够长,并且将字符串转换为密钥的函数很健壮,那么以这种方式使用字符串密码就不会有任何特殊的安

我想在数据库中存储加密的用户密码。我需要使用双向对称加密,例如AES(在这种特殊情况下,使用散列不是选项)

第一部分
使用需要加密的字符串作为密钥是否会显著增加风险?如果有必要,将向密钥添加一个公共可用(同一行)盐

第二部分
相同的问题,但适用于以下场景:

  • A使用B作为密钥(包括salt)进行加密,并且
  • B用A作为密钥加密(包括salt)
两个加密值都存储在同一数据库行中。

第1部分 只要您的字符串密码足够长,并且将字符串转换为密钥的函数很健壮,那么以这种方式使用字符串密码就不会有任何特殊的安全问题

第二部分
为了防止涉及第一个块的重播攻击,您应该始终使用salt。将nonce注入IV,或在加密流的头部注入。

您计划使用什么链接模式?这对非salt的情况有很大影响。使用CBC,但我在每种情况下都使用salt。您使用什么函数将字符串转换为键?盐不是加在钥匙上的东西。Salting意味着一个nonce被注入到IV或被加密的流中,或者两者都被注入。