Функция хеширования для данных 2D штрих-кода - PullRequest
0 голосов
/ 17 марта 2011

Я записываю строку длиной около 120 символов в двухмерный штрих-код.Наряду с другим текстом, строка содержит уникальный номер заявки.Я хочу убедиться, что кто-то не генерирует поддельные билеты, читая 2D-штрих-код и генерируя свои собственные штрих-коды.

Я хотел бы хэшировать строку и добавлять значение хеш-функции к тому, что встроено в штрих-код.Таким образом, я могу сравнить два при чтении и посмотреть, были ли данные подделаны.Я видел несколько хеш-функций, которые возвращают 64 байта и более, но чем больше символов вы встраиваете в 2D-штрих-код, тем больше становится изображение штрих-кода.Я хотел бы алгоритм, который возвращает довольно небольшое значение.Также было бы хорошо, если бы я мог предоставить функции свой собственный ключ.Столкновение не так уж важно.Это не какое-либо приложение национальной безопасности.

Есть предложения?

1 Ответ

0 голосов
/ 17 марта 2011

Используйте любую стандартную хеш-функцию.Возьмите строку из 120 символов;добавить свою секретную ценность;вставьте его в SHA-1 или MD5, или в любую другую хеш-функцию, которая вам удобна или которую вы хотите реализовать;затем просто возьмите первые биты, сколько хотите , и используйте это в качестве значения.(Если вам нужны символы ASCII, тогда я предлагаю вам взять группы из 6 битов и использовать кодировку base-64.)

Если используемый вами хеш-код подходит (например, MD5 и SHA)-1, MD5 не следует использовать для серьезных криптографических алгоритмов в наши дни, но, похоже, он достаточно хорош для ваших нужд), тогда любой набор битов будет «достаточно хорош» в том смысле, что никакая другая функция, производящая такое количествобиты будут намного лучше.

(Предупреждение: при серьезном криптографическом использовании вы должны быть немного осторожнее. Посмотрите, например, http://en.wikipedia.org/wiki/HMAC для получения дополнительной информации. Из вашего описания я не делаюЯ думаю, тебе нужно беспокоиться о таких вещах.)

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