OTPまたはS / KEY - 6つの読める単語に16進文字列の変換
-
21-09-2019 - |
質問
RFC2289(S / KEY)に見られるように、
、読み取り可能な形式に進数の文字列を変換する際に使用しなければならない単語のリストがあります。
どのように私はそうやって行くのでしょうか?
RFCは言及します:
ワンタイムパスワードは、そのためであります 変換し、そして、Aとして受け入れ 6つの短い(1〜4文字)の配列 英単語。各単語が選択されています 2048個の単語の辞書から。 11時 ワード当たりのビット、すべてのワンタイムパスワード 符号化されてもよい。
さらに読みます: http://www.faqs.org/rfcs/rfc1760.html#ixzz0fu7QvXfe
は、この平均値は小数点以下に進に変換した後、単語の配列の指標としてそれを使用しません。それができる他の事は、例えばエンコードテキストを使用しています1111年にはUTF-8エンコーディングで犬と等しいかもしれません。
あなたの助けを事前に感謝!
解決
小数に変換する必要はありません。あなた進値が文字列である場合には、単に(例えば、Integer.valueOf(value, 16)
で)数に変換します。その後、単語を検索し、その番号を使用します。あなたは、メモリ内の全体の辞書を格納することができた場合は、インデックスとして番号を使用しています。あなたは、メモリに格納することができない場合は、どのくらいあなたが(すべてのアイテムは、個別の行にある場合、ファイルに多くの行を読んで)見て、辞書ファイルに制御するために使用します。あなたは、データベースのどこかを持っていれば、テーブルのキーとして番号を使用して、キーで選択します。
所属していません StackOverflow