1

RFC2289(S / KEY)に見られるように、16進文字列を読み取り可能な形式に変換するときに使用する必要のある単語のリストがあります。

どうすればそうできますか?

RFCは次のように述べています。

したがって、ワンタイムパスワードは、6つの短い(1〜4文字の)英語の単語のシーケンスに変換され、受け入れられます。各単語は2048語の辞書から選択されます。ワードあたり11ビットで、すべてのワンタイムパスワードをエンコードできます。

続きを読む: http: //www.faqs.org/rfcs/rfc1760.html#ixzz0fu7QvXfe

これは、16進数を10進数に変換し、それを単語の配列のインデックスとして使用することを意味しますか?他の可能性があるのは、テキストエンコーディングを使用することです。たとえば、1111はUTF-8エンコーディングのdogと同等である可能性があります。

よろしくお願いします!

4

1 に答える 1

1

10進数に変換する必要はありません。16進値が文字列の場合は、数値に変換するだけです(たとえば、を使用してInteger.valueOf(value, 16))。次に、その番号を使用して単語を検索します。辞書全体をメモリに保存できる場合は、その数値をインデックスとして使用します。メモリに保存できない場合は、それを使用して、辞書ファイルのどこまで検索するかを制御します(すべての項目が別々の行にある場合は、その数の行をファイルに読み込みます)。どこかにデータベースがある場合は、その番号をテーブルのキーとして使用し、キーで選択します。

于 2010-02-18T16:55:50.690 に答える