ROT13 ("rotație de 13 poziții", câteodată scris ca și ROT-13) este o metodă simplă de codificare folosită în special pe forum-urile online pentru a masca spoilere, glume, soluțiile unui puzzle, precum și materiale ofensatoare. ROT13 a fost descris ca și "Echivalentul pe internet a revistelor care imprimă răspunsul la întrebări intors"[1]. ROT13 este un exemplu de Cifru Cezar folosit în Roma antică.

ROT13 înlocuieşte fiecare literă cu celelalte 13 opuse din alfabet. De exemplu, HELLO devine URYYB (sau, inversând, URYYB devine HELLO din nou).

Descriere modificare

Codificarea în ROT13 a unui text cere o examinare a caracterelor alfabetului și înlocuirea fiecărei litere cu litera care se află cu 13 poziții în fața ei în alfabet, ascunzând tot textul dacă este nevoie.[2] A devine N, B devine O, și tot așa până la M, care devine Z, apoi regula continuă cu începutul alfabetului: N devine A, O devine B, și continuă până la Z, care devine M. numai literele care apar în Alfabetul englez sunt codificate; numerele, simbolurile, spațiile, și toate celelalte caractere sunt lăsate neschimbate. Deoarece sunt 26 de litere în alfabetul englez și 26 = 2 x 13, ROT13 este propriul lui invers :[2]

  pentru orice text x.

Implementare modificare

Pe platforme de tip Unix, ROT13 și ROT47 sunt ușor de implementat folosind aplicația pentru terminal tr; pentru a cripta șirul „The Quick Brown Fox Jumps Over The Lazy Dog” în ROT13:

$ # Map upper case A-Z to N-ZA-M and lower case a-z to n-za-m
$ echo "The Quick Brown Fox Jumps Over The Lazy Dog" | tr 'A-Za-z' 'N-ZA-Mn-za-m'
Gur Dhvpx Oebja Sbk Whzcf Bire Gur Ynml Qbt
$ tr 'A-Za-z' 'N-ZA-Mn-za-m' <<<"The Quick Brown Fox Jumps Over The Lazy Dog"
Gur Dhvpx Oebja Sbk Whzcf Bire Gur Ynml Qbt

și același șir pentru ROT47:

$ echo "The Quick Brown Fox Jumps Over The Lazy Dog" | tr '\!-~' 'P-~\!-O'
%96 "F:4< qC@H? u@I yF>AD ~G6C %96 {2KJ s@8

și

$ tr '\!-~' 'P-~\!-O' <<<"The Quick Brown Fox Jumps Over The Lazy Dog"
%96 "F:4< qC@H? u@I yF>AD ~G6C %96 {2KJ s@8

Python:

import codecs
import unicodedata
s = u"România"
codecs.encode(unicodedata.normalize('NFKD',s).encode('ascii', 'ignore'), 'rot_13')

Note modificare

  1. ^ Horrocks, Bruce (). „UCSM Cabal Circular #207-a”. Usenet group uk.comp.sys.mac (Message ID UZ36hgCSoh$+EwqG@nodomain.nodomain.us). Accesat în . 
  2. ^ a b Schneier, Bruce (). Applied Cryptography (ed. Second). John Wiley & Sons. p. 11. ISBN 0-471-11709-9. 

Vezi și modificare

Legături externe modificare