如何保护节点 js 中的 Web 应用程序?

时间:2021-07-08 22:23:02

标签: node.js express security hash cryptography

我见过的主要视频中的家伙存储在数据库中的散列密码。没关系。但是如果我也想加密它们呢?使用例如 SHA512 和 RSA512。但是Hash和Encrypt之间有区别,反之亦然?我使用 Node Js/Mongoose 和 express。

2 个答案:

答案 0 :(得分:0)

欢迎使用 Stack ,您应该使用 bcrypt 包与 mongoose 、bcrypt.hashbcrypt.compare ... 8 到 10 轮:

答案 1 :(得分:0)

散列和加密是两个不同的概念,主要区别在于散列是一种单向算法,而加密是双向的。永远不要加密密码,因为没有正当理由解密它们。

如果您愿意,您可以对加盐哈希进行加密,如果您有一个可靠的加盐哈希方案,它的必要性是值得怀疑的。如果你想走那条路,你正在寻找的术语是“静态加密”,你可以在谷歌上搜索与猫鼬有关的内容。

归根结底,您应该通过 TLS 获取密码,因此它们会以加密形式出现,然后您将其解密,因为您需要使用它的纯文本来生成散列以进行存储。在散列之前或散列之后再次加密它,您不会获得任何收益。事实上,您只是增加了计算工作来减慢服务器的速度,并引入了您处理私钥的方式的责任。

另外,SHA+RSA 不是加密方案,而是签名方案。您使用 SHA 进行哈希处理并使用您的私钥进行签名,这样任何拥有您的公钥的人都可以验证该哈希是否有效并且来自您。

相关问题