簡體   English   中英

使用crypt()進行php blowfish哈希:CLI結果與webserver的結果不同

[英]php blowfish hashing with crypt(): the CLI result differs from webserver's one

當我使用PHP函數crypt()使用Blowfish算法與web服務器

<?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中的位置參數

當你逃避它們時,它將按預期工作:

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

因此,當你想修改comman行中的一些PHP時,你應該以交互方式運行它:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM