在 db c# 中存储密码哪种方法更安全[关闭]

问题描述 投票:0回答:2

我正在开发一个 API 项目,其中的用户将注册并登录和注销移动应用程序。我将使用 Web API .net core 5 开发此应用程序。我想通过基于有效的 jwt 令牌登录来处理用户身份验证。

我的问题是哪种类型的哈希适合在数据库中存储哈希密码。这是我一直在看的两种类型,哪一种更安全?

//sha256 method from the system web helpers namespace
var hash1 = Crypto.SHA256("password");

//hashpassword from the system web helpers namespace
var hash2 = Crypto.HashedPassword("12345");

两者都来自 microrosft/.net 库,所以我的印象是它们都是安全的,但是我注意到有些网站有 sha256 的解密机制。我正在走向

hashedPassword
类中的
Crypto
方法...

c# .net-core asp.net-core-webapi sha256
2个回答
2
投票

SHA256 使用 SHA256 算法,而 HashPassword 使用 RFC 2898。

至于差异,请看this帖子。

您应该选择

HashPassword
,因为它会自动为您生成盐。此外,RFC 2898 被认为更安全,因为它被故意放慢速度,这使得暴力破解变得更加困难。

注意:两者都是散列算法,而不是加密算法,因此根据定义,两者都不能“解密”。


0
投票

我见过多次推荐

bcrypt
作为密码哈希算法,因为它能够支持算法内不同数量的迭代,以在尝试破解当今更强大的 CPU/GPU 时提供保护。

George Stocker 的内容非常丰富 answer 包含一些阅读该主题的好资源。

© www.soinside.com 2019 - 2024. All rights reserved.