OTP или S / KEY - преобразование шестнадцатеричной строки в 6 читаемых слов - PullRequest
1 голос
/ 18 февраля 2010

Как видно из RFC2289 (S / KEY), есть список слов, которые необходимо использовать при преобразовании шестнадцатеричной строки в читаемый формат.

Как мне поступить?

В RFC упоминается:

Поэтому одноразовый пароль преобразован и принят как последовательность из шести коротких (от 1 до 4 букв) Английские слова. Каждое слово выбрано из словаря 2048 слов; в 11 бит на слово, все одноразовые пароли может быть закодирован.

Подробнее: http://www.faqs.org/rfcs/rfc1760.html#ixzz0fu7QvXfe

Означает ли это преобразование шестнадцатеричного числа в десятичное, а затем использование его в качестве индекса для массива слов. Другое дело, что это может быть использование текстовой кодировки, например 1111 может равняться собаке в кодировке UTF-8

Заранее спасибо за помощь!

1 Ответ

1 голос
/ 18 февраля 2010

Нет необходимости преобразовывать в десятичную. Если ваше шестнадцатеричное значение является строкой, просто преобразуйте его в число (например, с помощью Integer.valueOf(value, 16)). Затем используйте этот номер, чтобы найти слово. Если вы можете сохранить весь словарь в памяти, используйте номер в качестве индекса. Если вы не можете сохранить его в памяти, используйте его для контроля того, как далеко вы смотрите в файл словаря (если каждый элемент находится на отдельной строке, прочитайте столько строк в файл). Если у вас где-то есть база данных, используйте номер в качестве ключа таблицы и выберите по ключу.

...