好吧,所以我知道这听起来可能很愚蠢,但我很难理解加密是什么,因为它与哈希不同。我已经阅读了它,但我仍然不太确定。所以,我希望你们能帮助我。
散列密码和加密密码有什么区别?
加密与散列
没有人真正“加密”密码,尽管您可以......但是您将使用另一个密码对其进行加密,并且您需要该密码来解密第一个密码。当涉及到密码时,我们通常对它们进行哈希处理。
散列只是一种方式。您无法取回字符串,您只能检查字符串是否针对哈希进行验证。如果您的字符串针对哈希进行验证,这并不能保证它是相同的“密码”,但您可以使用它登录,因为您发现了一个冲突。相对而言,“消息”/密码通常仅限于少数字符。
加密是双向的。例如,您有一个算法、一个密钥和一条消息。使用密钥,您可以解锁消息。通常,消息可以是任意大小。
临时流程图示例
我做了几个过于简化的流程图。希望能帮助到你。
看到上面了吗?你会得到“消息”没有任何意义。为什么?您已经在输入密码,即“消息”本身。
现在看看这个:
使用加密,如果解密密钥正确,您将获得解密的消息。您使用密钥来解锁加密的内容。
使用 hashing ,如果它验证或发生冲突,您已经拥有“消息” 。您输入的是消息。
散列是一个不可逆的过程:一个函数,“散列”,不能“反转”。一旦你有了哈希值,你只能通过暴力破解来猜测原始密码,这涉及对各种可能的密码进行哈希处理,直到最终得到相同的哈希值,这表明你猜测的密码与原始密码相同.
加密是一个可逆过程:两个函数, 'encryption' <-> 'decryption';如果您有密钥,则可以解密加密的内容;解密无需猜测即可恢复原始密码。
散列密码的安全性很大程度上取决于执行散列函数所需的计算量。需要的计算越多,花费的时间就越长;由于蛮力攻击必须针对数千或数百万个可能的密码重复该计算,因此每个单独的哈希计算花费的时间越长,攻击就越不实用。
加密密码的安全性取决于算法的健全性和密钥的机密性。
散列的好处是不需要密钥,这提高了系统的整体安全性——减少了一个不被攻击者控制的秘密部分。