2010-12-02 34 views
2

ROT13 a la belle propriété d'être une involution pour un alphabet AZ (26 lettres), c'est-à-dire:chiffrement involutive (comme ROT13) pour un alphabet avec un nombre impair de symboles

ROT13(ROT13(string-A-to-Z)) = string-A-to-Z ; 

Qu'est-ce une fonction de chiffrement simple pour un alphabet avec un impair nombre de symboles ayant la même propriété? Évidemment, une substitution directe ne fonctionnera pas, mais je cherche quelque chose de presque aussi simple.

+1

Une autre façon de le dire est que ROT13 est un appariement: il prend chaque lettre à son partenaire. Pour que cela fonctionne, le nombre de lettres doit être pair. – TonyK

+0

Vous pouvez simplement avoir un caractère inhabituel qui reste lui-même pendant le cryptage. – CodesInChaos

+0

La seule belle propriété de ROT13 que je peux penser est la facilité avec laquelle il peut vous obtenir modéré +1 Funny sur un certain forum nerd ... –

Répondre

4

Excluez l'un des symboles de l'alphabet du chiffre ou complétez-le avec un symbole qui ne figure pas dans l'alphabet.

+2

Merde, je pensais sérieusement trop cette chose. * Retour au travail ... * – Crypto

1

Vous pouvez « inverser » l'alphabet, de commutation A avec Z et B avec Y etc.

+0

Si vous regardez cela d'une autre façon, il "exclut" encore une lettre du chiffre, puisque l'alphabet inversé correspondra à l'original à la lettre "du milieu". (Considérons par exemple l'alphabet 123, en inversant cela vous obtient 321, donc chiffré le 2 est toujours un 2.) – Tim

+1

@Tim: Il n'y a vraiment aucune raison pour laquelle chaque symbole devrait être mappé à un autre. Tant que l'attaquant ne connaît pas le code, elle ne saura pas si les symboles/symboles sont inchangés. – sth

+0

Absolument - Je voulais juste souligner la corrélation avec la réponse d'Ignacio ci-dessus. – Tim

2

Un tel chiffre est nécessairement le produit de transpositions disjoints, donc si vous aviez un nombre impair de lettres, on aurait rester en place.