Нужна помощь в переводе Java-шифрования на PHP - PullRequest
0 голосов
/ 08 февраля 2011

Я пытаюсь перенести «простой» алгоритм строкового шифрования с Java на PHP, и он использует достаточно мало неясных битов конкретных библиотек Java, которые я бью головой об стену. Я надеюсь, что SO-сообщество может помочь. Вот Java:

public static String encode(String str) throws Exception {
    MessageDigest md = MessageDigest.getInstance("SHA-1");
    md.reset();
    return (new BASE64Encoder()).encode(md.digest(str.getBytes("UTF-8")));
}

Интуитивно, я думаю, что эквивалент в PHP будет выглядеть примерно так:

base64_encode(sha1($str));

но это не работает. Я предполагаю, что это как-то связано с использованием getBytes?


РЕДАКТИРОВАТЬ : Вот несколько примеров того, что я получаю:

  • Java-кодирование "garden": sa3lMQV / UcKZJHkzXQO3dK / etvo =
  • PHP-кодирование "garden": YjFhZGU1MzEwNTdmNTFjMjk5MjQ3OTMzNWQwM2I3NzRhZmRlYjZmYQ ==

  • Java-код "WhyJavaWhy": oJTJIq6WJM8P9rFPnZdoyK / WBK4 =

  • PHP кодирует "WhyJavaWhy": YTA5NGM5MjJhZTk2MjRjZjBmZjZiMTRmOWQ5NzY4YzhhZmQ2MDRhZQ ==

Ответы [ 2 ]

1 голос
/ 08 февраля 2011

Это работает:

base64_encode(sha1($str, TRUE));

$ php -r "echo base64_encode(sha1('garden', TRUE));"
sa3lMQV/UcKZJHkzXQO3dK/etvo=
0 голосов
/ 08 февраля 2011

Попробуйте

base64_encode(sha1(utf8_encode($str)));
...