PHP哈希方法,每次输出相同

PHP哈希方法,每次输出相同,php,hash,Php,Hash,因此,如果我执行类似于sha1($data)的操作,结果将是BLAHBLAH123。但是,如果我再次这样做,它将是BLAHAHS316。同样的事情也发生在md5上。所以我的问题是,什么是散列值的一致方法 因此,每次使用相同的$data参数对函数进行求值时,like函数($data)都将返回blahblah123 编辑:我有一个特定的目的,这不是密码,所以安全性不是一个问题 编辑:例如,md5($data)不会每次返回BLAHBLAH,有时它会返回blahhal。我不想那样。我希望它每次都返回相同

因此,如果我执行类似于
sha1($data)
的操作,结果将是
BLAHBLAH123
。但是,如果我再次这样做,它将是
BLAHAHS316
。同样的事情也发生在
md5
上。所以我的问题是,什么是散列值的一致方法

因此,每次使用相同的
$data
参数对函数进行求值时,like
函数($data)
都将返回
blahblah123

编辑:我有一个特定的目的,这不是密码,所以安全性不是一个问题

编辑:例如,
md5($data)
不会每次返回
BLAHBLAH
,有时它会返回
blahhal
。我不想那样。我希望它每次都返回相同的东西,
BLAHBLAH

散列函数是(如果不是这样的话,它们将是无用的)

在计算机科学中,确定性算法是一种算法,在给定特定输入的情况下,它总是产生相同的输出,而底层机器总是通过相同的状态序列

如果您想要“不同的输出”,请考虑域的另一个(例如时间)输入,如
sha1(microtime().$data)
。我不确定这在实践中有多有用


密码散列函数使用(随机生成,单独存储)作为附加输入,因此相同的纯文本密码将产生不同的存储散列值。

仅当输入发生更改时,散列操作的输出才会更改

例如:

echo sha1( 'test' );

a94a8fe5ccb19ba61c4c0873d391e987982fbbd3
如果希望每次都更改,可以在输入中附加时间戳:

echo sha1( 'test'.time() )

3d68b7693768f199623f31f820b1ba29b0a58769

散列方法——给出相同的值,但不容易预测或解码,这是我认为您正在寻找的

可以使用常量字符串val并对该字符串进行哈希运算,以始终获得相同的值,如果要更改该值,可以更改常量并获得不同的哈希值

$constStr = "hashThis";
$hashWord = md5($constStr);

// it will return the same value always, as long as the constStr is the  same

使用相同的
md5
sha1
输出的两个不同输入


这是可能的,但很难做到。看看这里:

只要$data变量改变,返回值就会改变,你不能从不同的字符串中得到相同的散列值

我尝试过使用sha1,但它每隔一段时间就会改变一次。我希望它保持不变,不改变。你能确认
$data
没有改变吗?让我再试一次,我可能错了。是的,我能。好吧,你是对的。我想我第一次做错事了。谢谢