ROT13 ( engelsk rotere ; "skift 13 positioner", nogle gange stavet med en bindestreg - ROT-13 ) er en simpel substitutionskryptering for det engelske alfabet (Standard Latin), brugt i internetfora som et middel til at skjule spoilere . hovedtanker, puslespil løsninger og stødende materiale fra et afslappet blik. ROT13 er blevet beskrevet som " online -ækvivalenten til den måde, magasiner skriver quiz - svar på hovedet" [1] . ROT13 er en variation af Cæsar-chifferet udviklet iDet gamle Rom .
ROT13 er en reversibel algoritme , det vil sige, du kan annullere ROT13 ved at anvende den samme algoritme; de samme handlinger kan bruges til kodning og afkodning. Algoritmen giver ikke nogen reel kryptografisk sikkerhed og bør aldrig bruges til dette. Det nævnes ofte som det kanoniske eksempel på en svag krypteringsmetode. ROT13-algoritmen har affødt en række online bogstav- og ordspil; Algoritmen bruges ofte i nyhedsgrupper (Usenet).
Anvendelse af ROT13-algoritmen på et stykke tekst kræver blot at erstatte hvert alfabetisk tegn med dets tilsvarende skift med 13 positioner i alfabetet [2] . A bliver til N , B bliver til O , og så videre op til M , som bliver Z , og derefter påføres bogstaver fra begyndelsen af alfabetet successivt: N bliver A , O bliver til B , og så videre indtil Z , som bliver til M. Kun de bogstaver, der bruges i det engelske alfabet , er berørt ; tal, symboler, mellemrum og alle andre tegn forbliver uændrede. Da der kun er 26 bogstaver i det engelske alfabet, og 26 = 2 × 13, så er ROT13-funktionen omvendt til sig selv [2] :
for enhver tekst x .Med andre ord, to på hinanden følgende anvendelser af ROT13 gendanner den originale tekst (i matematik kaldes dette nogle gange involution ; i kryptografi, gensidige cifre ).
Transformationer kan udføres ved hjælp af en opslagstabel , såsom:
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz |
NOPQRSTUVWXYZABCDEFGHIJKLMnopqrstuvwxyzabcdefghijklm |
For eksempel, i den følgende joke, blev hovedideen lukket med chifferen ROT13:
Hvordan kan du skelne en udadvendt fra en introvert hos NSA ? Vil du være sikker på, at du skal bruge AFN?Tekstkonvertering via ROT13-chiffer, svar på joken:
I elevatorerne kigger den udadvendte på den ANDEN fyrs sko. Va gur ryringbef, gur rkgebireg ybbxf ng gur BGURE thl'f fubrf.Genanvendelse af ROT13-algoritmen vil gendanne originalen.
ROT13 blev brugt af net.jokes nyhedsforum i begyndelsen af 1980'erne [3] . Det blev brugt til at dække over potentielt stødende vittigheder eller som svar på et puslespil eller en spoiler. Det trettencifrede skift blev valgt frem for andre værdier, såsom tre, som i den oprindelige Cæsar-chiffer, fordi tretten er et tal, der giver både kodning og afkodning, og dermed giver en enkelt bekvemmelighed for begge kommandoer [2] [4] . ROT13 understøttes generelt som en indbygget funktion i nyhedsfeed-læsersoftwarefunktioner [4] . E-mail-adresser er også nogle gange kodet med ROT13-algoritmen for at skjule dem fra mindre avancerede spambots .
ROT13 er et specialtilfælde af krypteringsalgoritmen kendt som Cæsar-chifferet , tilskrevet Julius Cæsar i det 1. århundrede f.Kr. [5] . En mere specifik brug af kryptering er af den indiske filosof Vatsyayana Mallanaga , forfatter til sexmanualen Kama Sutra .
ROT13 er ikke beregnet til brug med følsomme oplysninger; at bruge et konstant skift betyder, at krypteringen reelt er nøglefri , og der skal ikke mere viden til at dekryptere end det faktum, at ROT13 kan bruges. Selv uden denne viden kan algoritmen let dechifreres gennem frekvensanalyse [2] . Da det er fuldstændig inkonsistent med egentlig hemmelig beskyttelse, er ROT13 blevet slang for enhver tilsyneladende svag krypteringsordning; kritikere vil måske hævde, at "56-bit DES er lidt bedre end ROT13 i fortiden." Derudover bruges ofte ligheder med udtryk fra det virkelige liv, for eksempel "dobbelt DES", brug med humoristisk sans "dobbelt ROT13", "ROT26" eller "2ROT13", herunder i det parodi akademiske værk "On the 2ROT13". Krypteringsalgoritme” [6] .
Ved at anvende ROT13-algoritmen på den allerede ROT13-chiffertekst, får vi den originale tekst; ROT26 svarer til ingen kryptering i sig selv. Derudover svarer den tredobbelte brug af ROT13 eller 3ROT13 (brugt i en legende analogi med 3DES) til almindelig ROT13.
I december 1999 blev det konstateret, at Netscape Communicator brugte ROT-13 som en del af en usikker ordning til at gemme e-mail-adgangskoder [7] . I 2001 demonstrerede den russiske programmør Dmitry Sklyarov , at en e-bogsleverandør, New Paradigm Research Group (NPRG), brugte ROT13 til at kryptere deres dokumenter; NPRG har angiveligt misbrugt ROT13 i et legetøj, for eksempel leveret af Adobe med eBook Software Development Kit til seriøs kryptering [8] Windows XP bruger ROT13 til nogle af dets registreringsnøgler [9] .
abcdefghijklmnopqrstuvwxyz NOPQRSTUVWXYZABCDEFGHIJKLM | |
aha ↔ nonne | myre ↔ nag |
balk ↔ onyx | takt ↔ en |
barf ↔ dem | være ↔ eller |
bin ↔ æg | ebbe ↔ tag |
misundelse ↔ skinne | er ↔ vedr |
fejler ↔ rev | flap ↔ sync |
pels ↔ hun | gel ↔ prøv |
myg ↔ tang | irk ↔ vex |
kontorist ↔ pyrex | ↔ cheryl _ |
PNG ↔ kat | SHA ↔ sjovt |
furby ↔ sheol | terra ↔ grøn |
hvad ↔ Jung | URL ↔ hej |
purpura ↔ tjetjensk | lyste ↔ FUBAR |
ROT13 giver mulighed for "ordspil". Nogle ord transformeret af ROT13-algoritmen producerer et andet kendt ord. De længste eksempler fra det engelske sprog består af syv bogstaver: "abjurer" (som giver afkald på sin tro) ↔ "nowhere" (ingensteds) og "Chechen" ( tjetjensk ) ↔ "purpura" ( purpura ). Andre eksempler på ord er givet i tabellen [10] .
I 1989 tilføjede International Obfuscated C Code Contest (IOCCC) sammenslutningen Brian Westley notation. Westley -computerprogrammet kan korrekt kompilere både almindelige og ROT13-kodede kilder. Programmet fungerer enten for at udføre ROT13-kodning eller omvendt kodning af den kodede inputtekst [11] .
Alt.folklore.urban-nyhedsgruppen fandt på ordet "furrfu", som er ROT13-kodet for det almindeligt brugte ord "sheesh" (ugh!). "Furrfu" blev flittigt brugt i midten af 1992 som svar på de hyppigt udsendte gentagelser af bymyter på alt.folklore.urban, hvortil mange klagede over, at sådanne svar på nye indlæg var overdrevne [12] .
I Darths and Droids [13] webcomic, siger en karakter (Jim, spillet af Qui-Gon Jinn ), at i ROT13 er ordet "Jedi" (Jedi) kodet som "munk" (munk). En anden helt (Pete, der spiller robot R2-D2 ) retter ham straks og bemærker, at "munk" i ROT13 svarer til "Zbax".
ROT47 er afledt af ROT13-algoritmen, udover det grundlæggende sæt af bogstaver, bruger den også tal og hjælpetegn. I stedet for at bruge den alfabetiske sekvens A–Z , bruger ROT47 et større tegnsæt kendt som ASCII -kodning . Især 7-bit tegn, der skal udskrives, eksklusive mellemrum, fra decimal 33. tegn '!' op til det 126. tegn '~' - 94 tegn i alt, taget i rækkefølgen af de numeriske værdier af deres ASCII-koder, er i stand til at flytte 47 positioner uden særlige arrangementer. For eksempel er tegn A knyttet til p , tegn a er afbildet til 2 . Brug af et større alfabet giver mere grundig tilsløring end ROT13, for eksempel er det ikke indlysende, at Z`\c`d\gbh\eggd er det kodede telefonnummer +1-415-839-6885. På den anden side, da ROT47 indtaster tal og tegn i en blanding uden nogen skelnen, er det mere indlysende, at teksten er blevet krypteret.
Eksempel:
Den hurtige brune ræv hopper over den dovne hund .krypteret ind
%96 "F:4< qC@H? u@I yF>AD ~G6C %96 {2KJ s@8]GNU C Library , et sæt standardrutiner til brug i computerprogrammer, indeholder memfrob()- funktionen [14] , som har lignende formål som ROT13, selvom den er beregnet til at blive brugt med vilkårlige binære data. Denne funktion fungerer ved at operere på hver byte i forbindelse med det binære mønster 00101010 ( tallet 42 ) ved at bruge den eksklusive ELLER (XOR) operation. Dette fungerer som en simpel XOR-chiffer . Ligesom ROT13 er memfrob() gensidig og giver et lignende, næsten ikke-eksisterende, sikkerhedsniveau.
I programmeringssproget Python ser algoritmen sådan ud:
def rot13 ( tekst ): rot13ed = '' for bogstav i tekst : byte = ord ( bogstav ) kapital = ( byte & 32 ) byte &= ~ kapital hvis ord ( 'A' ) <= byte <= ord ( 'Z' ): byte -= ord ( 'A' ) byte += 13 byte %= 26 byte += ord ( 'A' ) byte |= kapital rot13ed += chr ( byte ) return rot13edOptimeret version:
def rot13 ( tekst ): sub = 'NOPQRSTUVWXYZABCDEFGHIJKLM[\]^_`nopqrstuvwxyzabcdefghijklm' res = [] for bogstav i tekst : res . tilføje ( under [ ord ( bogstav ) - 65 ] ) returnere '' . deltage ( res )Et eksempel i Rust -programmeringssproget :
#[rustfmt::spring] const SUBSTITUTIONER : [ u8 ; 58 ] = [ b'N' , b'O' , b'P' , b'Q' , b'R' , b'S' , b'T' , b'U' , b'V' , b'W' , b' X' , b'Y' , b'Z' , b'A' , b'B' , b'C' , b'D' , b'E' , b'F' , b'G' , b'H' , b'I' , b'J' , b'K' , b'L' , b'M' , 0 , 0 , 0 , 0 , 0 , 0 , b'n' , b'o' , b'p' , b'q' , b'r' , b's' , b't' , b'u' , b'v' , b'w' , b' x' , b'y' , b'z' , b'a' , b'b ' , b'c' , b'd ' , b'e ' , b'f' , b'g' , b'h' , b'i' , b'j' , b'k' , b'l' , b'm' , ]; /// # Eksempel /// /// ``` /// assert_eq!("Uryyb, jbeyq!", rot13("Hej, verden!")); /// ``` fn rot13 ( src : & str ) -> String { src . bytes () . kort ( | byte | { lad capital_byte = byte & ! 32 ; char :: fra ( if capital_byte >= b'A' && capital_byte <= b'Z' { // sikkerhed: dette burde være sikkert for latinske bogstaver usikre { * SUBSTITUTIONER . get_unchecked (( byte - b'A' ) som usize ) } } andet { byte }) }) . samle () } fn main () { let src = "Hej verden!" ; println! ( "Original: \" {} \" , kodet: \" {} \" " , src , rot13 ( src )); }