我一直想知道的一个概念是使用加密哈希函数和值.我知道这些函数可以生成一个唯一且几乎不可能反转的哈希值,但这是我一直想知道的:
如果在我的服务器上,在PHP中我生成:
md5("stackoverflow.com") = "d0cc85b26f2ceb8714b978e07def4f6e"
Run Code Online (Sandbox Code Playgroud)
通过MD5函数运行相同的字符串时,您在PHP安装上获得相同的结果.正在使用一个过程从一些起始值产生一些值.
这是不是意味着有一些方法来解构正在发生的事情并扭转哈希值?
这些函数是什么使得结果字符串无法回溯?
在阅读了为什么单向散列函数是单向的之后,我想知道如何设计散列函数.是的,我知道不使用经过验证和测试的哈希函数是一个坏主意,但我仍然想知道设计中的重要性以及设计过程是什么样的.
我熟悉Feistel网络密码,但这些密码必然是可逆的,这对加密哈希来说是可怕的.是否存在某种在加密哈希中使用得很好的结构?是什么让它成为单向的?
我正在编写一个需要读取用户名和密码并存储它们的应用程序,以便程序可以在以后再次读取它们.将它存储在某些变量中听起来像是一个愚蠢的想法.
发现KDE 库,但它有太大的依赖性,而且我太新手程序员了解如何使用它.
存储密码的常用方法有哪些,以及如何解决我的问题?
使用BCrypt技术将密码作为哈希存储到数据库中.虽然与MD5,SHA-1等快速哈希算法相比可能有点慢,但我们决定更安全.
在.Net中我使用http://bcrypt.codeplex.com/实现了
BCrypt.Net.BCrypt.HashPassword("Password", BCrypt.Net.BCrypt.GenerateSalt(12));
Run Code Online (Sandbox Code Playgroud)
在我们的网站中,管理员将为新用户创建用户名和密码.
存储散列密码没有问题.但是如果管理员想要更新密码,他需要查看旧密码.我没有看到任何解密存储在Bcrypt.Net中的数据库中的散列值的方法.
有没有办法从Bcrypt哈希密码生成文本?但是我同意这不应该是可能的,但有一些情况我们会这样做:(
更新:我决定使用存储在某些表中的默认密码作为纯文本和散列文本并存储为用户的密码.当用户登录该站点时,他将被迫更改密码,直到他重置为止.这听起来不错吗?
cryptography ×2
hash ×2
bcrypt ×1
c# ×1
c++ ×1
cryptographic-hash-function ×1
encryption ×1
md5 ×1
qt ×1
security ×1