2013-08-09 4 views
0

Я выполняю хэш по различным данным. В большинстве данных, после того, как я получаю результат хэш, я могу сделать var_dump хэша, и он будет печатать:Php hash return type: Not string (64)?

> string(64) "<hash goes here>" 

Однако, для одного из данных, которые я хэширования, результат печатает хэш, без «строки (64)», предшествующей ему, и никаких кавычек вокруг него.

> <hash goes here> 

Что послужило бы причиной этого? Возможно, это связано с размером данных?

Пример кода, что я должен видеть:

$string= "hello"; 
$hash = hash('sha512', $string, true); 
var_dump($hash); 

Это должно напечатать:

string(64) "<hash value of 'hello'>" 

В моем случае, заменить "привет" с содержимым длинного файла PHP. По какой-то причине var_dump не печатает значение в кавычках с «строкой (64)» перед ним.

+1

Можете ли вы показать код, который воспроизводит это? – nickb

+0

Что такое хэш, который не имеет строки (64) перед ним? – cmorrissey

+0

Слишком долго печатать, но это файл php. – Lebowski156

ответ

1

Вы используете третий набор параметров для истинного в хэш-функции, так что ваш выход в формате двоичного, что не подходит для просмотра в стандартный вывод. Предыдущий хеш может содержать некоторые контрольные символы, которые подавляют часть следующего вывода. Двоичные данные следует рассматривать в шестнадцатеричной форме (третий параметр установлен в false) или сохраняется в файле и просматривается шестнадцатеричным редактором.

+0

Спасибо, это должно быть. Просто любопытно, если бы у меня был гекс, можно ли было бы подтвердить, что это так? IE. Есть ли что-то вроде диаграммы ascii для контрольных символов – Lebowski156

+0

В шестнадцатеричном моем хеше началось с 9a, которое я нашел здесь: http://en.wikipedia.org/wiki/C0_and_C1_control_codes – Lebowski156

+0

Если вы начнете использовать hex, вы должны получить 'string (128) 'перед каждым хешем. Каждые два символа ниже * 0x20 * (32 в десятичной форме) являются управляющими символами. –