c# - 检查字符串是否被加密 r 不在 c# 中
问题描述
如何找到密码是否通过 C# 加密(SHA256 算法)。我有一个带有密码列的客户表。我需要在 c#.net 中查找哪些密码已加密,哪些未加密
解决方案
SHA256 哈希是一个 32Byte[] 的字符串,它可以是64char 长度的字符串。
根据基数,有效的 char可能是 [a-fA-F0-9]
base64 或 base64 [0-9a-zA-Z+/]
。
但这还不够,因为FOOBAR01
过去 8 次的复制既是密码又是来自2^(32*8)
可能的纯文本的哈希值。
您应该只强制您的用户在下一次连接时更改密码并一直对其进行哈希处理。
你也可以从另一面来处理这个问题。
在您的登录功能中,将输入密码与数据库值进行比较。如果匹配,那么您有一个 Unhash 密码并且可以转换它。
或者它没有,你尝试比较哈希输入和数据库值,如果匹配你有一个哈希密码,用户应该登录。否则没有密码匹配,登录失败。
推荐阅读
- firebase - 如何根据用户注册的位置设置不同的自定义声明?
- c++ - C++ 可变参数模板推导失败
- mongodb - 存储在地图中的数据,需要数组中所有对象的所有值
- javascript - 故事书 6 - 错误:您同时拥有“主”和“配置”。请从您的 configDir 中删除“config”文件
- postgresql - 获取超过 Postgres 中选定输入的日期
- scala - 用于 ftp 的 Scala zio
- javascript - Webpack 的实际版本 - ValidationError: Style Loader Invalid Options options should NOT have additional properties
- node.js - 使用 SuperTest 进行测试时保持会话
- amazon-iam - 策略中的主体无效:MalformedPolicyDocument
- html - 如何使用 display: table 使元素进入同一 div 中的表格单元格下?