1
12
你不应该使用 任何 从任意二进制数据转换回字符串的普通编码。它不是编码文本-它只是一个字节序列。不要试图将其解释为“普通”文本。原始密码是否包含任何非ASCII字符与此无关-您当前的代码被破坏。(我只是基于这个理由,对这篇文章有很大的怀疑。) 我建议:
|
2
2
将第一个引用改为
|
3
0
我更喜欢jon解决方案,但另一个选择是将原始十六进制存储为字符串。将最后一行替换为:
您可能需要考虑的一件事是加强密码。
加强密码的方法是多次散列它,这会增加散列的CPU需求。获取sha1散列的输出并将其作为第二轮的输入传递。至少做1000次。这会降低您和攻击者的哈希计算速度。对于您的用户,它将访问延迟很短的时间;该例程将在0.01秒而不是0.0001秒后返回。但是对于蛮力攻击,执行时间增加了1000倍。 您可以滚动自己的.NET框架,但.NET框架会公开一个类来执行以下操作: system.security.cryptography.rfc2898派生字节 RFC2898使用sha1算法,接受纯文本、salt和迭代次数。它可以输出可变长度的键。 http://msdn.microsoft.com/en-us/library/system.security.cryptography.rfc2898derivebytes.aspx |
Emopusta · 从后端到前端的图像路径不工作 2 年前 |
Asdrubal Hernandez · Linq查询特定数组索引出错 2 年前 |
Niyazi Babayev · 如何在表达式中动态应用表达式? 2 年前 |
Dansih · .Net核心自定义身份验证方案 2 年前 |
lolorekkk · 面板插入。NET WinForm 2 年前 |