ROT13 (ROT-13) je jednoduchá monoalfabetická substituční šifra nad abecedou 26 znaků anglické abecedy. ROT13 je speciálním případem Caesarovy šifry.
Šifrování a dešifrování
K šifrování a dešifrování je použita operace posunu (rotace) abecedy o 13 znaků. Pokud abecedu zapíšeme do dvou řádků o třinácti znacích, tak šifrujeme a dešifrujeme tím způsobem, že nahrazuje písmena z prvního řádku odpovídajícími písmeny z druhého řádku (a písmena druhého řádku písmeny řádku prvního).
Příklady
EMAMAMASO ⇔ RZNZNZNFB
UTOKZASVITANI ⇔ HGBXMNFIVGNAV
ZASILKANACESTE ⇔ MNFVYXNANPRFGR
UTOKZASVITANI ⇔ HGBXMNFIVGNAV
ZASILKANACESTE ⇔ MNFVYXNANPRFGR
Kód
/** * ROT13 * @param text text obsahujici pouze velke znaky anglicke abecedy * @return sifrovany text pokud byl vstupem otevreny text, desifrovany text, pokud byl vstupem sifrovany text */ public static String rot13(String text) { StringBuilder builder = new StringBuilder(); for (int i = 0; i < text.length(); i++) { if (text.charAt(i) < 'A' || text.charAt(i) > 'Z') { throw new IllegalArgumentException("Text must contain only uppercase english letters"); } builder.append((char) ('A' + ((text.charAt(i) - 'A' + 13) % 26))); } return builder.toString(); }