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


sha1 encode exact value of parameter instead of the variable value

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

问题是当我使用下面的

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

它给了我一个sha1编码的实际字符串,而我想得到一个sha1编码的张贴值,所以在这个例子中,我想得到

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

我怎么能意识到这一点?它真的那么简单吗?我想的太难了吗?

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

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

为什么不这样做呢?尽管我认为两种方式都会得到相同的结果....

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

如果您想对所有值的字符串进行散列,而不是对值进行散列,那么如果您想存储值,那么您可能应该对每个值进行散列,这样您至少可以稍后对它们进行比较。对于想要将密码保存到数据库的登录系统非常有用,这比仅仅存储密码更安全…

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

如果你散列字符串,你不知道哪个值是错的