Делает ли использование Base64 поверх Hex для кодирования моего хэша SHA-1 менее безопасным? - PullRequest
2 голосов
/ 27 декабря 2010

Многие примеры в Интернете показывают хэш в виде шестнадцатеричного представления, и они, как правило, являются пользовательскими реализациями. Есть ли что-то плохое или менее безопасное в использовании кодировки Apache Commons Base64? Когда вы читаете о кодировке, обычно речь идет о том, как представлять двоичный файл как текст в XML, но не обязательно обсуждает вопросы безопасности ... как работает сжатие.

Что касается связанной проблемы, зачем все это кодировать, поскольку в базах данных есть двоичные типы, которые могут содержать шифрование в двоичном виде? Так что, если я храню пароль, почему бы не сохранить его в его собственном типе?

Ответы [ 4 ]

5 голосов
/ 27 декабря 2010

Кодировка влияет только на представление данных, но не на их безопасность.Таким образом, если вы отправляете незашифрованный пароль и используете какую-либо форму кодирования, вы не сделаете его более безопасным;аналогично, если вы возьмете какой-то текст с высокой степенью шифрования и затем представите его в какой-либо схеме кодирования, это также не сделает его менее безопасным.Как правило, причиной использования этой формы кодирования является отправка двоичных данных с использованием протокола (такого как SMTP), где протокол поддерживает только 7-битный текст ASCII.Другое использование в URL-адресах, где набор символов, которые может поддерживать URL-адрес, ограничен, но вы можете захотеть поместить произвольно сложные двоичные данные в этот URL-адрес (например, какую-то подпись проверки).

3 голосов
/ 27 декабря 2010

Совсем нет.Это просто кодировка, которая представляет те же биты в ASCII.Это в основном полезно, когда вам нужно хранить или передавать двоичные данные по каналам связи, предназначенным для обработки только текста.Современные примеры или электронная почта и веб-интерфейсы.Вы также не можете отправить двоичную форму в терминал, чтобы просмотреть ее, так как это может привести к мусору или странному поведению терминала.

Если вы можете безопасно хранить биты в двоичном двоичном объекте в базе данных, нет оснований для кодирования в base64.Но если вы этого не сделаете, это будет сложнее для просмотра.Сначала вам нужно будет преобразовать его обратно в текстовую форму.

1 голос
/ 27 декабря 2010

Нет, поскольку Base64 - это кодировка 1: 1 (то есть для каждого входа имеется ровно один кодированный выход base64 и наоборот), base64, кодирующий хэш SHA1, так же «безопасен», как и шестнадцатеричное кодирование.(или в этом случае двоичное кодирование) хеш.

Кодирование сделает хеш небезопасным, только если кодирование позволяет нескольким хэшам кодировать одну и ту же строку или несколько строк декодировать в одну и ту жехэш.

1 голос
/ 27 декабря 2010

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

Я не понимаю , почему они использовали бы Base64 вместо шестнадцатеричного, но я предполагаю, что это потому, что шестнадцатеричный код - 16 цифр, а Base64 - несколько больше, таким образом генерируя более компактную версию фактического хеш ;) ~ Мы, люди, склонны лучше поглощать небольшое количество данных за раз.

...