2010-02-18 15 views
1

Comme vu dans la RFC2289 (S/KEY), il y a une liste de mots qui doivent être utilisés lors de la conversion de la chaîne hexadécimale dans un format lisible.OTP ou S/KEY - Conversion de la chaîne hexadécimale en 6 mots lisibles

Comment pourrais-je procéder?

Le RFC mentionne:

Le mot de passe unique est donc converti en , et acceptée comme une séquence de six court (1 à 4 lettre) des mots anglais. Chaque mot est choisi à partir d'un dictionnaire de 2048 mots; à 11 bits par mot, tous les mots de passe à usage unique peuvent être codés.

En savoir plus: http://www.faqs.org/rfcs/rfc1760.html#ixzz0fu7QvXfe

Est-ce que cela signifie convertir un hexagone en décimal puis en servir comme un index pour un tableau de mots. L'autre chose qu'il pourrait être est d'utiliser un codage de texte par ex. 1111 pourrait égaler le chien en codage UTF-8

merci d'avance pour votre aide!

Répondre

1

Il n'est pas nécessaire de convertir en décimal. Si votre valeur hexadécimale est une chaîne, il suffit de la convertir en un nombre (par exemple, avec Integer.valueOf(value, 16)). Ensuite, utilisez ce numéro pour rechercher le mot. Si vous pouvez stocker tout le dictionnaire en mémoire, utilisez le numéro comme index. Si vous ne pouvez pas le stocker en mémoire, utilisez-le pour contrôler la distance dans le fichier du dictionnaire (si chaque élément se trouve sur une ligne distincte, lisez autant de lignes dans le fichier). Si vous avez une base de données quelque part, utilisez le numéro comme clé de la table et sélectionnez par clé.

+0

En nombre, je suppose que vous voulez dire un nombre en base 10, également connu sous le nom d'un nombre décimal. J'espérais qu'il y avait une méthode réelle que je dois suivre en termes de système s/clé – Garbit

+0

Vous voulez dire que vous cherchiez une API, comme http://sourceforge.net/projects/otp-j2me/? En ce qui concerne «nombre», je veux dire une représentation java d'un nombre - un int, double, court, etc. Integer.valueOf (chaîne, radix), avec une base de 16, convertira une chaîne hexadécimale en un int. Si votre chaîne est la base 10, vous pouvez utiliser Integer.valueOf (chaîne) ou utiliser 10 pour la base. – atk