编程语言
首页 > 编程语言> > 使用crypt()进行PHP河豚哈希运算:CLI结果与网络服务器的结果不同

使用crypt()进行PHP河豚哈希运算:CLI结果与网络服务器的结果不同

作者:互联网

当我通过Web服务器使用Blowfish算法使用php函数crypt()时:

<?php

    echo crypt('SAD123', sprintf('$2a$10$%s', '7711cbpe58dfpogiu049857f011werb0'));

我得到这个结果:

$2a$10$7711cbpe58dfpogiu0498u5Vh773A3qx.3LE3ro3NX7F9c9N7.pOm

但是,如果我在命令行中使用PHP解释器:

php -r "echo crypt('SAD123', sprintf('$2a$10$%s', '7711cbpe58dfpogiu049857f011werb0'));"

我得到另一个结果:

a0SqNHxQ8/2mA

你有什么想法?

系统是:
Apache / 2.2.3(CentOS),
PHP版本5.4.26

解决方法:

这是因为命令字符串中带有以下数字的美元符号在bash中也被解释为positional parameters.

当您逃脱它们时,它将按预期工作:

$php -r "echo crypt('SAD123', sprintf('\$2a\$10$%s', '7711cbpe58dfpogiu049857f011werb0'));"

因此,当您想在命令行中修改一些PHP时,应该以交互方式运行它:

$php -a
php > echo crypt('SAD123', sprintf('$2a$10$%s', '7711cbpe58dfpogiu049857f011werb0'));

标签:crypt,blowfish,php
来源: https://codeday.me/bug/20191029/1957386.html