【发布时间】:2021-07-08 22:23:02
【问题描述】:
我看过的主要视频中的家伙存储在数据库中的哈希密码。没关系。但是如果我也想加密它们呢?例如,将 SHA512 与 RSA512 结合使用。但是哈希和加密之间有区别,反之亦然?我使用 Node Js/Mongoose 和 express。
【问题讨论】:
标签: node.js express security hash cryptography
我看过的主要视频中的家伙存储在数据库中的哈希密码。没关系。但是如果我也想加密它们呢?例如,将 SHA512 与 RSA512 结合使用。但是哈希和加密之间有区别,反之亦然?我使用 Node Js/Mongoose 和 express。
【问题讨论】:
标签: node.js express security hash cryptography
欢迎来到 Stack ,您应该使用 bcrypt 包和 mongoose 、bcrypt.hash 和 bcrypt.compare ... 使用盐轮 8 到 10:
【讨论】:
散列和加密是两个不同的概念,主要区别在于散列是一种单向算法,而加密是双向的。您永远不应该加密密码,因为没有正当理由解密它们。
如果您愿意,您可以加密加盐哈希,如果您有一个可靠的加盐哈希方案,那么它的必要性是值得怀疑的。如果你想走这条路,你正在寻找的术语是“静态加密”,你可以在谷歌上搜索它与猫鼬的关系。
归根结底,您应该通过 TLS 获取您的密码,因此它们会被加密,然后您解密它们,因为您需要它的纯文本来生成用于存储的哈希。然后在散列之前或散列之后再次对其进行加密,您不会获得任何收益。事实上,您只是增加了计算工作以降低服务器的速度,并引入了您处理私钥的方式的责任。
此外,SHA+RSA 不是加密方案,而是签名方案。您使用 SHA 散列并使用您的私钥签名,因此任何拥有您公钥的人都可以验证该散列是否有效并且来自您。
【讨论】: