хэширование php blowfish с помощью crypt (): результат CLI отличается от результата веб-сервера

Когда я использую функцию php crypt (), используя алгоритм Blowfish с веб-сервером:

<?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

3

Решение

Это связано с тем, что знаки доллара со следующими цифрами в командной строке также интерпретируются как позиционные параметры в баш.

Когда вы избежите их, он будет работать как положено:

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

Поэтому, когда вы хотите поработать с каким-то PHP в строке комманов, вам нужно просто запустить его в интерактивном режиме:

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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]