2010-12-30 2 views
0

Supposons que votre employé de banque vous donne un mot de passe arbitraire tel que hel34/[email protected]# et vous ne pouvez pas vous en souvenir sans l'écrire sur un papier. Dilemme: vous n'écrivez jamais de mots de passe sur papier. Vous essayez donc d'inventer un cryptage, une carte un-à-un, où vous écrivez seulement une clé sur un papier, seulement des chiffres, et laissez le reste à votre serveur. Bien sûr, le mot de passe peut être constitué de choses arbitraires.Chiffrement de chaîne uniquement avec des nombres?

mvds a l'idée correcte, pour changer la base. Eugene constaté une erreur, de sorte que celui-to-one-carte devrait ressembler à:

prime1*prime2*...*primeN <----- encoding -------> String 
+2

Je pense que vous devez nous donner quelques exemples. Je n'ai aucune idée de ce que tu veux ici. –

+0

Merde, je pensais que je l'ai eu mais 1a2 = 11412 n'a pas de sens pour moi ... – mvds

+0

oh ça fait, ''a '== 0141' ... Ce n'est pas une bonne idée, puisque les différentes chaînes d'entrée pourrait conduire à la même chaîne "alphs to oct". 14a == "14141" == a41. Donc, vous perdez des informations dans l'encodage. – mvds

Répondre

2

Je ne sais pas si je comprends vraiment votre problème, mais vous pouvez voir votre entrée comme numéro de base 62 (26 + 26 + 10), que vous pouvez lire en entier, puis le traiter comme vous le souhaitez. Puis convertissez le résultat en votre format base-62 personnalisé.

Ainsi, à titre d'exemple, votre gamme de chiffres est donc [0-9a-zA-Z]0 = 0 décimale et Z = 61 décimal, et 10 seraient 62 décimales.

Alors 9aZ serait * 62 * 9 62 + 10 * 62 + 61 = 35277 décimal, ce qui a des facteurs premiers 3 * 11 * 1069.

les convertirez soutiendraient conduire à: 9aZ = 3 * b * hg

0

Première de tous, votre code numérique ne peut pas être plus court que le mot de passe: un mot de passe plus court réduit la force de protection. Vous devez donc garder le mot de passe intact (et l'encoder) ou le rendre encore plus long. Lorsque vous parlez de codage, vous pouvez utiliser le codage BASE10 ou BASE16. Avec l'encodage Base16 vous avez 2 caractères par caractère d'origine (si nous restons dans le jeu de caractères ASCII), avec l'encodage Base10, la longueur varie, et pour assurer un décodage correct, vous finirez par utiliser 3 caractères par caractère ASCII original.

Questions connexes