我一直想知道的一个概念是使用加密哈希函数和值.我知道这些函数可以生成一个唯一且几乎不可能反转的哈希值,但这是我一直想知道的:
如果在我的服务器上,在PHP中我生成:
md5("stackoverflow.com") = "d0cc85b26f2ceb8714b978e07def4f6e"
Run Code Online (Sandbox Code Playgroud)
通过MD5函数运行相同的字符串时,您在PHP安装上获得相同的结果.正在使用一个过程从一些起始值产生一些值.
这是不是意味着有一些方法来解构正在发生的事情并扭转哈希值?
这些函数是什么使得结果字符串无法回溯?
可能重复:
MD5哈希值怎么不可逆?
我正在读一个关于MD5的问题,它让我记住了令我难以置信的事情.非常简单的问题,如果它不是一个好的我很抱歉.我只是无法理解你是如何使用某种算法将某些东西转换为一种东西的,并且无法使用该算法反向转换回来.
那怎么可能呢?
此外,由于多个字符串可以创建相同的MD5哈希值,因为它的数据少于输入字符串,所以其他任何哈希系统如何更好?
我正在阅读关于MD5哈希值的这个问题,接受的答案让我困惑.据我所知,cryptopgraphic哈希函数的一个主要属性是找到具有相同哈希值的两个不同消息(输入)是不可行的.
然而,为什么MD5哈希值不可逆的问题的共识答案呢?是由于输入字符串的无限数量将产生相同的输出. 这似乎与我完全矛盾.
另外,令我困惑的是,算法是公开的,但哈希值仍然是不可逆的.这是因为散列函数中总是存在数据丢失,因此无法分辨哪些数据被丢弃了吗?
当输入数据大小小于固定输出数据大小时(例如,散列密码"abc")会发生什么?
编辑:
好的,让我看看我是否有这个:
我正在阅读有关密码哈希的一些内容.我见过SHA-256> MD5.这让我思考应用程序如何处理从一个哈希函数到另一个哈希函数的更改.如果有人使用MD5实现一个哈希密码的应用程序,会发生什么.然后他们决定使用SHA-256.但是,当然存储在数据库中的密码哈希值是在MD5中.
将数据库中的数据从一个散列函数迁移到另一个散列函数的过程是什么?
hash ×4
md5 ×3
cryptography ×2
cryptographic-hash-function ×1
encryption ×1
passwords ×1
security ×1
sha ×1