ROT13 - ROT13

ROT13, alfabe boyunca her harfi 13 karakterlik ortağıyla değiştirir. Örneğin, HELLOolur URYYB(veya tersine tekrar URYYBolur HELLO).

ROT13 (" 13 basamak döndür ", bazen tireli ROT-13 ), alfabede bir harfi kendisinden sonraki 13. harfle değiştiren basit bir harf değiştirme şifresidir . ROT13, eski Roma'da geliştirilen Sezar şifresinin özel bir halidir .

Temel Latin alfabesinde 26 harf (2×13) olduğundan, ROT13 kendi tersidir ; yani, ROT13'ü geri almak için aynı algoritma uygulanır, böylece kodlama ve kod çözme için aynı eylem kullanılabilir. Algoritma neredeyse hiç kriptografik güvenlik sağlamaz ve genellikle zayıf şifrelemenin kanonik bir örneği olarak gösterilir.

ROT13, çevrimiçi forumlarda spoiler , noktalama işaretleri , bulmaca çözümleri ve rahatsız edici materyalleri sıradan bakıştan gizlemenin bir aracı olarak kullanılır . ROT13, çevrimiçi olarak çeşitli harf ve kelime oyunlarına ilham kaynağı olmuştur ve haber grubu konuşmalarında sıkça bahsedilmektedir .

Açıklama

ROT13'ü bir metne uygulamak, yalnızca alfabetik karakterlerini incelemeyi ve her birini alfabenin daha ilerisindeki 13 harfiyle değiştirmeyi , gerekirse başa sarmayı gerektirir. Aolur N, Bolur O olur ve 'ye kadar devam eder M, bu olur Z, sonra dizi alfabenin başlangıcında devam eder: Nolur A, O olur Bve böyle devam eder Z, bu olur M. Yalnızca İngiliz alfabesinde bulunan harfler etkilenir; sayılar, semboller, boşluklar ve diğer tüm karakterler değişmeden bırakılır. İngiliz alfabesinde 26 harf ve 26 = 2 × 13 olduğundan, ROT13 işlevi kendi tersidir :

herhangi bir temel Latin alfabesi metni için x .

Başka bir deyişle, ROT13'ün iki ardışık uygulaması orijinal metni geri yükler ( matematikte buna bazen involüsyon denir ; kriptografide karşılıklı bir şifre ).

Dönüşüm , aşağıdaki gibi bir arama tablosu kullanılarak yapılabilir :

Giriş ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
Çıktı NOPQRSTUVWXYZABCDEFGHIJKLMnopqrstuvwxyzabcdefghijklm

Örneğin, aşağıdaki şakada, önemli nokta ROT13 tarafından gizlenmiştir:

Tavuk neden yoldan geçti?
Gb trg gb gur bgure fvqr!

Tüm metni ROT13 formu ile dönüştüren şakanın cevabı ortaya çıkıyor:

Tem qvq gur puvpxra pebff gur ebnq?
Diğer tarafa geçmek!

ROT13'ün ikinci bir uygulaması orijinali geri yükleyecektir.

kullanım

ROT13, MÖ 1. yüzyılda Julius Caesar tarafından kullanılan, Caesar cipher olarak bilinen şifreleme algoritmasının özel bir halidir .

18. yüzyıl saatçisi ve sürekli hareket makinelerinin kurucusu Johann Ernst Elias Bessler , ROT13'ün soyadını Orffyre olarak kodladığını belirtti . O onun kullanılan latin harfleriyle yazılmış biçimini, Orffyreus onun takma gibi.

ROT13, 1980'lerin başında net.jokes haber grubunda kullanılıyordu . Potansiyel olarak rahatsız edici şakaları gizlemek veya bir bulmacanın veya başka bir spoiler'ın cevabını gizlemek için kullanılır . Orijinal Caesar şifresinde olduğu gibi üç gibi diğer değerlere göre on üç kaydırma seçilmiştir , çünkü on üç, kodlama ve kod çözmenin eşdeğer olduğu değerdir ve böylece her ikisi için tek bir komutun uygunluğuna izin verir. ROT13, genellikle haber okuma yazılımına yerleşik bir özellik olarak desteklenir. E-posta adresleri bazen onları daha az gelişmiş spam botlarından gizlemek için ROT13 ile kodlanır . Ayrıca, e-posta taramasını ve spam filtrelemesini atlatmak için kullanılır. Bir e-postanın içeriğini gizleyen tarama algoritması, e-postayı örneğin bir güvenlik riski olarak tanımlayamaz ve alıcının gelen kutusuna girmesine izin verir.

Herhangi bir önemli boyutta şifrelenmiş, normal, İngilizce metinde, ROT13 bazı harf/kelime kalıplarından tanınabilir. "n", "V" (yalnızca büyük harfle yazılmıştır) ve "gur" ("a", "I" ve "the" için ROT13) ve "yl" ("ly") ile biten kelimeler örnektir.

ROT13, gizliliğin önemli olduğu durumlarda kullanılmak üzere tasarlanmamıştır —sürekli kaydırmanın kullanılması, şifrelemenin etkin bir şekilde anahtarı olmadığı anlamına gelir ve şifre çözme, ROT13'ün kullanımda olduğu gerçeğinden daha fazla bilgi gerektirmez. Bu bilgi olmadan bile, algoritma frekans analizi yoluyla kolayca kırılır . Gerçek gizliliğe tamamen uygun olmaması nedeniyle, ROT13, bariz bir şekilde zayıf olan herhangi bir şifreleme şemasına atıfta bulunan bir slogan haline geldi ; bir eleştirmen "56-bit DES bugünlerde ROT13'ten biraz daha iyi" diyebilir. Ayrıca, "double DES" gibi gerçek terimlerle oynanan bir oyunda, "double ROT13", "ROT26" veya "2ROT13" terimleri mizahi bir amaçla ortaya çıkıyor (çünkü ROT13'ü zaten ROT13 ile şifrelenmiş bir metin orijinal düz metni geri yükler , ROT26, "On the 2ROT13 Encryption Algorithm" başlıklı sahte bir akademik makale de dahil olmak üzere hiçbir şifrelemeye eşdeğer değildir. Ek olarak, üçlü ROT13 (3DES ile şaka analojisinde kullanılır) normal ROT13'e eşdeğerdir.

Aralık 1999'da Netscape Communicator'ın e-posta parolalarını saklamak için güvenli olmayan bir planın parçası olarak ROT13'ü kullandığı bulundu . 2001'de Rus programcı Dimitry Sklyarov , bir e-Kitap satıcısı olan New Paradigma Research Group'un (NPRG) belgelerini şifrelemek için ROT13'ü kullandığını gösterdi; NPRG'nin, Adobe eBook yazılım geliştirme kitiyle sağlanan ROT13 oyuncak örneğini ciddi bir şifreleme şemasıyla karıştırmış olabileceği tahmin ediliyor . Windows XP, bazı kayıt defteri anahtarlarında ROT13 kullanır. ROT13, potansiyel olarak rahatsız edici diktaları gizlemek için Unix servet programında da kullanılır .

Harf oyunları ve ağ kültürü

abcdefghijklmnopqrstuvwxyz
NOPQRSTUVWXYZABCDEFGHIJKLM
ahanun antnag
balkonyx barone
barfones beor
binova ebbsroof
envyrail erre
errsreef flapsync
furshe geltry
gnattang irkvex
clerkpyrex purelycheryl
PNGcat SHAfun
furbysheol terragreen
whatJung URLhey
purpuraChechen shoneFUBAR
AresNerf abjurernowhere

ROT13, harf oyunları için bir fırsat sağlar . Bazı kelimeler, ROT13 ile dönüştürüldüğünde başka bir kelime üretecektir. 7 harfli çiftlerinin örnekleri İngilizce dil olan abjurer ve hiçbir yerde ve Çeçen ve purpura . Bunun gibi diğer kelimelerin örnekleri tabloda gösterilmiştir. Gnat ve tang çifti , hem ROT13 karşılıklı hem de ters olan kelimelere bir örnektir.

1989 Uluslararası Gizlenmiş C Kodu Yarışması (IOCCC), Brian Westley'in bir girişini içeriyordu. Westley'in bilgisayar programı ROT13'te kodlanabilir veya tersine çevrilebilir ve yine de doğru şekilde derlenir . Yürütüldüğünde işlemi, ROT13 kodlamasını gerçekleştirmek veya girişini tersine çevirmek içindir.

Alt.folklore.urban haber grubu , sıklıkla kodlanan " şeyh " ifadesinin ROT13 kodlaması olan bir kelime - furrfu - türetti . " " 1992'nin ortalarında , alt.folklore.urban'da şehir mitlerini tekrarlayan ilanlara yanıt olarak , bazı afişlerin "Şeyh!" diye şikayet etmesinin ardından gelişti. yeni gelenlere bir yanıt olarak aşırı kullanılıyordu. Furrfu

Varyantlar

ROT5, sayısal rakamlara (0 - 9) uygulanan ROT13'e benzer bir uygulamadır. ROT13 ve ROT5, bazen ROT18 (18 = 13 + 5) veya ROT13.5 olarak adlandırılan aynı mesajda birlikte kullanılabilir.

ROT47, temel harfleri karıştırmanın yanı sıra sayıları ve ortak sembolleri ele alan ROT13'ün bir türevidir. A–ZSırayı alfabe olarak kullanmak yerine ROT47, ASCII olarak bilinen ortak karakter kodlamasından daha geniş bir karakter kümesi kullanır . Spesifik olarak, ASCII kodlarının sayısal değerleri sırasına göre alınan, toplamda 94 olmak üzere 33 " " den 126 " 'ya kadar, boşluk hariç 7 bit yazdırılabilir karakterler, özel durum dikkate alınmadan 47 konum döndürülür. . Örneğin, karakter eşleştirilir ederken, eşleştirilmiş . Daha büyük bir alfabenin kullanılması, ROT13'ünkinden daha kapsamlı bir karartma üretir; örneğin, şifreli sonuçtan ilk bakışta belli olmayan gibi bir telefon numarası . Öte yandan, ROT47 ayrım gözetmeksizin karışıma sayılar ve semboller soktuğu için metnin şifrelendiği daha çabuk anlaşılır. !~Apa2+1-415-839-6885Z`\c`d\gbh\eggd

Örnek:

The Quick Brown Fox Jumps Over The Lazy Dog.

şifreler

%96 "F:4< qC@H? u@I yF>AD ~G6C %96 {2KJ s@8]

GNU C kütüphanesi , kullanıma hazır standart rutinleri bir dizi bilgisayar programlama , bir içeriyor fonksiyonu - bu sallama ikili verilerle kullanılmak üzere tasarlanmıştır rağmen, rot13 benzer amacı vardır -ki. Fonksiyonu, her bir araya getirerek faaliyet bayt ile ikili desen 00101010 ( 42 kullanılarak) özel veya (XOR) işlem. Bu, basit bir XOR şifresini etkiler . ROT13 gibi, XOR (ve dolayısıyla ) kendi kendine karşılıklıdır ve benzer, neredeyse hiç olmayan bir güvenlik düzeyi sağlar. memfrob()memfrob()

uygulama

tr

ROT13 ve ROT47'nin Unix terminal uygulamasını kullanarak uygulanması oldukça kolaydır tr; ROT13'te "Hızlı Kahverengi Tilki Tembel Köpeğin Üzerinden Atlıyor" dizesini şifrelemek için:

$ # Map upper case A-Z to N-ZA-M and lower case a-z to n-za-m
$ 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

ve ROT47 için aynı dize:

$ 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

Emacs ve Vim

Olarak Emacs , bir kişinin ROT13 tampon veya aşağıdaki komutları ile seçim:

M-x toggle-rot13-mode
M-x rot13-other-window
M-x rot13-region

ve Vim metin düzenleyicisinde , şu komutla bir arabellek ROT13'e dönüştürülebilir:

ggg?G

piton

In Python , modül bu rot13 kullanılarak uygulanır:

>>> import this
The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!

>>> with open(this.__file__) as f:
...     print(f.read())
s = """Gur Mra bs Clguba, ol Gvz Crgref

Ornhgvshy vf orggre guna htyl.
Rkcyvpvg vf orggre guna vzcyvpvg.
Fvzcyr vf orggre guna pbzcyrk.
Pbzcyrk vf orggre guna pbzcyvpngrq.
Syng vf orggre guna arfgrq.
Fcnefr vf orggre guna qrafr.
Ernqnovyvgl pbhagf.
Fcrpvny pnfrf nera'g fcrpvny rabhtu gb oernx gur ehyrf.
Nygubhtu cenpgvpnyvgl orngf chevgl.
Reebef fubhyq arire cnff fvyragyl.
Hayrff rkcyvpvgyl fvyraprq.
Va gur snpr bs nzovthvgl, ershfr gur grzcgngvba gb thrff.
Gurer fubhyq or bar-- naq cersrenoyl bayl bar --boivbhf jnl gb qb vg.
Nygubhtu gung jnl znl abg or boivbhf ng svefg hayrff lbh'er Qhgpu.
Abj vf orggre guna arire.
Nygubhtu arire vf bsgra orggre guna *evtug* abj.
Vs gur vzcyrzragngvba vf uneq gb rkcynva, vg'f n onq vqrn.
Vs gur vzcyrzragngvba vf rnfl gb rkcynva, vg znl or n tbbq vqrn.
Anzrfcnprf ner bar ubaxvat terng vqrn -- yrg'f qb zber bs gubfr!"""

d = {}
for c in (65, 97):
    for i in range(26):
        d[chr(i+c)] = chr((i+13) % 26 + c)

print("".join([d.get(c, c) for c in s]))

Modül codec sağlar 'rot13' metin dönüşümü.

>>> import codecs
>>> print(codecs.encode(this.s, 'rot13'))
The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!

Ayrıca bakınız

Referanslar