gpt4 book ai didi

c# - 在存储到数据库之前保护密码

转载 作者:太空宇宙 更新时间:2023-11-03 22:08:16 25 4
gpt4 key购买 nike

我正在使用 this 中提供的 ASP.NET 密码散列代码示例文章。它使用 32 字节的 RNGCryptoServiceProvider 实例用于 Salt 和 SHA256Managed 实例用于散列。

  1. 您是否发现此处描述的方法在生产环境中使用有任何问题。
  2. 我不明白 BytesToHex 方法需要什么,也不明白为什么要在此处附加“x2”。有什么想法吗?
  3. 如果我想在 SQL Server 数据库中存储这个散列密码(通过 HashPassword 方法返回),应该使用什么数据类型。 CHAR(128)、VARCHAR(128) 或其他具有每种方法优缺点的东西。

TIA

最佳答案

  1. 如图所示,实现并没有真正的错误。这里真正的难题并不一定是正确地散列事物,就像正确地管理账户一样,这样就没有漏洞了。在任何情况下,您可能在大多数情况下都使用内置的成员(member)提供程序——通常没有充分的理由自行推出。

  2. .NET 加密内容处理字节,而大多数其他系统吐出这些字节的十六进制表示形式——查看 PHP 示例。 BytesToHex 方法的工作就是进行这种转换。在 ToString 方法中使用“x2”告诉字节使用什么格式——在本例中为十六进制。参见 the documentation以获得更深入的解释。

  3. 先看 #1。就个人而言,如果我自己滚动,我会使用 VARBINARY 或 BINARY 而不是进行文本转换——这是一个浪费的步骤,因为 .NET 无论如何都想将其视为 byte[]。如果您想要文本,并且您确定自己从未更改编码或哈希方法,那么我猜 CHAR(LENGTH_OF_HASH) 将是最有效的存储选项。

关于c# - 在存储到数据库之前保护密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7637267/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com