Java, эквивалентный hmac-SHA1 php

Если бы Вы просто используете доллары и центы, я использовал бы длинное (смещенный 2 десятичными разрядами). При необходимости в большем количестве детали большое десятичное число может быть способом пойти.

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

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

49
задан Juha Syrjälä 3 April 2012 в 05:32
поделиться

3 ответа

На самом деле они согласны.
Как уже отмечал Ханс Догген, PHP выводит дайджест сообщения в шестнадцатеричной системе счисления, если вы не установите для параметра raw output значение true.
Если вы хотите использовать ту же нотацию в Java, вы можете использовать что-то вроде

for (byte b : digest) {
    System.out.format("%02x", b);
}
System.out.println();

для соответствующего форматирования вывода.

39
ответ дан 7 November 2019 в 11:50
поделиться

Мне кажется, что PHP использует HEX-нотацию для байтов, которые производит Java (1a = 26) - но я не проверял все выражение целиком.

Что произойдет, если вы запустите байт массив с помощью метода на этой странице?

3
ответ дан 7 November 2019 в 11:50
поделиться

Haven't tested it, but try this:

        BigInteger hash = new BigInteger(1, digest);
        String enc = hash.toString(16);
        if ((enc.length() % 2) != 0) {
            enc = "0" + enc;
        }

This is snapshot from my method that makes java's md5 and sha1 match php.

1
ответ дан 7 November 2019 в 11:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: