sha1编码参数的精确值而不是变量值

时间:2011-11-28 20:51:30

标签: php

我正在使用一个需要对某些表单值进行sha1编码的应用程序。

问题在于,当我使用以下

<?php echo(hash("sha1","par1=".$_POST['p1']."&par2=".$_POST['p2'])); ?>

它为我提供了实际字符串的sha1编码,而我想获取已发布值的sha1编码,所以在这个例子中我想得到

<?php echo(hash("sha1","par1=firstvalue&par2=secondvalue")); ?>

我怎么能意识到这一点?它实际上是那么简单,我是否想到困难?

2 个答案:

答案 0 :(得分:1)

因为它将para1 = some_value标识为字符串而不是para1作为变量和some_value字符串 为了达到你想要的效果,你应该单独散列每个变量

或者我建议你实现自己的编码算法

答案 1 :(得分:0)

为什么不这样做呢?虽然我会以任何一种方式导致同样的事情......

$hash_this = "par1=".$_POST['p1']."&par2=".$_POST['p2'];
echo sha1($hash_this);

虽然如果你想要将值的字符串全部散列在一起而不是值,如果你想存储值 - 那么你可能会这样做 - 那么你应该散列每个值,所以你至少可以比较它们。对于要将密码保存到数据库的登录系统很有用,这比仅存储密码更安全...

$password = sha1($_POST['password']);

如果你对字符串进行散列,你就不知道哪个值是错误的