1

我有一个用户的密码字段,当它保存到数据库时,密码是加密的。

另外,如果我去编辑一个用户,密码字段是散列的。

但是由于加密的长度,散列字段有数百个字符长。

有没有办法显示可能只有 8 个字符?

这是保存后显示的,不太理想。

加密

4

2 回答 2

1

你不能做一个单独的选项来更改密码,并在编辑用户密码字段中显示类似*********. 如果在用户编辑期间您在密码字段中输入了内容,则再次通过加密。

于 2013-02-21T13:00:09.237 回答
0

这里有几件事让我担心,其中之一是,正如 RB 在评论中指出的那样,您正在互换使用加密和散列这两个术语。区别非常重要。简单来说,

  • 加密是指您以一种可以逆转的方式掩盖某些东西。一个例子(请注意一个不好的例子)是用数字 1 代替字母 A,用数字 2 代替字母 B 等等。“你好”会变成“7 5 12 12 15”,对于没有钥匙的人来说,这看起来毫无意义,但如果你知道怎么做,它是可逆的。
  • 散列是一种单向数学函数,它接受输入并将其转换为看似毫无意义的独特输出。简单来说,您几乎可以假设进入散列的每条唯一信息都将作为唯一值出现。但是,鉴于这种独特的输出,没有办法逆转它并发现输入是什么。

为了进一步扩展上述内容,如果我正在创建一个要求用户注册的网站,我会使用他们选择的密码,然后我会对该密码进行哈希处理,然后将该密码存储在安全的地方。然后我会丢弃用户实际输入的密码。下次该用户访问我的站点时,他们将输入他们的密码,我将再次对其进行哈希处理,然后我将根据我之前保存的内容检查哈希输出,并且由于相同的单词将始终产生相同的输出,如果这两个哈希匹配我会授予访问我的网站。

我还敦促您了解有关加盐密码的信息(更多信息可以在 Wikipedia 上找到),这在当今几乎是必不可少的。

现在,关于你的实际问题。再一次(我希望 RB 不介意我扩展他的出色评论)您在密码字段中看到的内容(* **)只是浏览器隐藏您的密码以免被窥探的一种方式。它看起来像星星的事实并不能使它安全。此外,您应该只从该输入字段中读取。你永远不应该写信给它。向您的密码字段写入任何内容都可以让攻击者了解有关您正在使用哪种散列或安全性的信息。

您可以做的最好的事情是将用户编辑屏幕上的密码字段留空。如果 MVC 为您自动填充它,那么它建议我将输入框的名称更改为与您的基础对象不相关的名称。可以在Microsoft 的 asp.net 网站上找到有关 MVC 安全性的更多信息。

于 2013-02-21T14:01:35.577 回答