2012-01-10 2 views
-3

так вот функция Java, которая уже существуетJava md5 хэш-функция PHP для проверки

StringBuffer sbTemp = new StringBuffer(); 
byte[] btTypeInPasswd = this.md.digest(this.password.getBytes()); 

for (int i = 0; i < btTypeInPasswd.length; i++) 
    sbTemp = sbTemp.append(btTypeInPasswd[i]); 

this.password = sbTemp.toString(); 

this.password будет содержать строку, как следует, если пароль был тест: -8774-113-27- 52-79-101-9028768115-45-111-23-121-10447-69-45

Что мне нужно, это PHP-функция для получения того же результата, можно ли это сделать?

I не может изменить файл java .class, так как это часть существующего приложения.

Это то, что я пробовал.

$bytes = md5("test", true); 
$bArray = array(); 

for ($x = 0; $x < strlen($bytes); $x++) 
    $bArray[$x] = ord(substr($bytes, $x, 1)); 

print "<pre>" . implode('-', $numbers) . "</pre>"; 

Однако, используя один и тот же пароль «тест» производит: 9-143-107-205-70-33-211-115-202-222-78-131-38-39-180-246 не на всех подобных -8774-113-27-52-79-101-9028768115-45-111-23-121-10447-69-45

Спасибо.

+0

Святое дерьмо, я сделал ошибку не отправляя то, что я пробовал, я просто предположил, что все будут понимать, что я пробовал очевидные вещи, такие как ord, pack/unpack и т. д. ... плохой. – Joe

ответ

1

Так что, благодаря троллям, если кто-то еще должен знать, как это сделать, вот как это сделать.

function md5_hash($password) 
{ 
    $hashArray = array(); 
    $hash = md5($password); 

    for ($x = 0; $x < strlen($hash); $x += 2) 
     $hashArray[$x] = (($dec = hexdec(substr($hash, $x, 2))) > 127 ? $dec - 256 : $dec); 

    return implode("", $hashArray); 
} 

Использование пароля «тест» приведет к вышеупомянутой функции возвращает строку: 9-113107-517033-45115-54-3478-1253839-76-10

+1

Тролли бегут бесплатно в stackoverflow. – EGHDK

0

PHP имеет встроенный md5() функции, заданной строки возвращает 32 символов шестнадцатеричной переваривать, например:

<? echo md5('test'); ?> 

дает:

098f6bcd4621d373cade4e832627b4f6 

Так что, если вы исправить код Java для вывода шестнадцатеричного кода вместо десятичного, результаты должны соответствовать.

+0

Это не вариант, поскольку у меня нет контроля над java-кодом, он уже установлен на камне, поскольку он является частью существующего приложения. Я просто хочу работать на PHP вместе с ним, обращаясь к существующим базам данных. – Joe

0
$md5 = md5('...... your string here ....'); 
$numbers = array(); 
for ($i = 0; $i < strlen($md5); $i++) { 
    $numbers[i] = ord(substr($md5, $i, 1)); 
} 

echo implode('-', $numbers); 
+0

Это не работает, мне пришлось отредактировать, вы немного похожи на эту '$ md5 = md5 (" test ", true); \t \t $ numbers = array(); \t \t \t \t для ($ I = 0; $ I " . implode('-', $numbers) . ""; 'однако, что будет производить: 9-143-107-205-70-33-211-115-202-222-78-131-38-39-180-246 – Joe