Encryption 为什么可以';我是否使用密码作为加密密钥来安全地加密密码?

Encryption 为什么可以';我是否使用密码作为加密密钥来安全地加密密码?,encryption,Encryption,我读过关于存储加密密码是如何不安全的,因为有权访问您的数据库/服务器的人可以获得您的加密密钥,然后解密用户密码。推荐的方法是使用hash-salt方法 但是如果我使用密码作为密钥来加密它自己呢 例如(伪代码): 这样,只有知道原始密码的用户才能解密和验证它,就像hash-salt方法一样 为什么这种方法没有像散盐那样被广泛使用或谈论?它有缺点吗?可能重复:好问题,但我认为这更适合计算机科学堆栈交换可能重复的标题类似,但不是问题和上下文您的方法本质上是一种特殊的哈希方法,并且具有任何哈希方法的所有

我读过关于存储加密密码是如何不安全的,因为有权访问您的数据库/服务器的人可以获得您的加密密钥,然后解密用户密码。推荐的方法是使用hash-salt方法

但是如果我使用密码作为密钥来加密它自己呢

例如(伪代码):

这样,只有知道原始密码的用户才能解密和验证它,就像hash-salt方法一样


为什么这种方法没有像散盐那样被广泛使用或谈论?它有缺点吗?

可能重复:好问题,但我认为这更适合计算机科学堆栈交换可能重复的标题类似,但不是问题和上下文您的方法本质上是一种特殊的哈希方法,并且具有任何哈希方法的所有缺点,即:速度太快(启用蛮力)并且可以接受预计算攻击(例如彩虹表)。你需要迭代、盐析和不利于GPU或ASIC实现的算法。换句话说,类似argon2的东西可能重复:好问题,但我认为这更适合计算机科学堆栈交换可能重复的标题类似,但不是问题和上下文你的方法本质上是一个广告-hoc hashing方法,并且具有任何hashing方法的所有缺点,即:它太快(启用蛮力)并且容易受到预计算攻击(例如彩虹表)。您需要迭代、salt和不利于GPU或ASIC实现的算法。换句话说,类似argon2的东西
raw_pswrd = get_user_input_pswrd()
encrypted_pswrd = (text=raw_pswrd, key=raw_pswrd)