Java SHA1 для юникода? - PullRequest
       1

Java SHA1 для юникода?

1 голос
/ 25 февраля 2012

Я пытался получить хеш SHA1 для строки в юникоде, какой-то китайской строки в Android код Java в Eclipse. Я использовал обычный класс MessageDigest и некоторый Hex-конверсионный фрагмент кода из Интернета.

Интересно, как проверить правильность хэша и его шестнадцатеричное преобразование? Я вставил эту китайскую строку в несколько онлайн-конвертеров хэшей, но все они создали разные хэши. Те же самые каверы прекрасно работают с Строки Ascii.

Я новичок в этом, поэтому некоторые советы будут оценены!

br, perza

Ответы [ 2 ]

4 голосов
/ 25 февраля 2012

Что считается "правильным"? Такие хеши, как SHA-1, имеют дело с двоичными данными, а не с текстом ... и существуют различные способы преобразования текста в двоичные.

Какова цель здесь? Вам нужно, чтобы хеш соответствовал тому, что генерирует какой-то другой код? Если это так, выясните, какую кодировку использует другой код для преобразования текста в двоичный. Если он должен соответствовать вашему коду, у вас есть свобода действий - я бы предложил использовать либо UTF-8, либо UTF-16, оба из которых гарантированно присутствуют в Java, обычно доступны на других платформы для будущих опций и охватывают весь набор символов Unicode.

0 голосов
/ 25 февраля 2012

Что вы подразумеваете под "Онлайн-конвертерами хеша"?

Если вы вычислили хэш SHA1 для какой-либо строки Unicode, то нет возможности получить строку обратно из хеша.Это ключ хэш-функции, ее «однонаправленная».

Вы можете использовать другую реализацию SHA и проверить, получите ли вы тот же хеш, что и в результате.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...