裏 RjpWiki

Julia ときどき R, Python によるコンピュータプログラム,コンピュータ・サイエンス,統計学

シーザー暗号の解読--その2

2021年05月15日 | ブログラミング

定石的なプログラム?でもって,以下を解読せよ。

sh jpbkhk kl Mhkypk lzaá zpabhkh lu ls jluayv kl sh wluíuzbsh piéypjh. lz sh jhwpahs kl lzwhñh f aplul aylz tpssvulz kl ohipahualz. jbluah ahuav jvu ihyypvz huapnbvz, kvukl zl thuaplulu svz lkpmpjpvz opzaóypjvz f ayhkpjpvuhslz, jvtv jvu ihyypvz ublcvz, xbl zvu tbf hupthkvz wvy zly ls jluayv wvsíapjv f ljvuótpjv. v zlh, lz buh jpbkhk abyízapjh kvukl jvucpclu sv jbsabyhs f sv kpclyapkv. hkltáz, ohf chypvz tbzlvz xbl zhapzmhjlu h tpssvulz kl abypzahz xbl cpzpahu lzah jpbkhk.

ヒントは,スクロールして

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

英文ではない

解答はもっとスクロールして

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

スペイン語でした

la ciudad de Madrid está situada en el centro de la península ibérica. es la capital de españa y tiene tres millones de habitantes. cuenta tanto con barrios antiguos, donde se mantienen los edificios históricos y tradicionales, como con barrios nuevos, que son muy animados por ser el centro político y económico. o sea, es una ciudad turística donde conviven lo cultural y lo divertido. además, hay varios museos que satisfacen a millones de turistas que visitan esta ciudad.

 

 

 

 

 

 

 

 

 

 

 

 

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

シーザー暗号の解読

2021年05月15日 | ブログラミング

シーザー暗号
https://oku.edu.mie-u.ac.jp/~okumura/python/gettysburg.html

cryptogram = """pyeb cmybo kxn cofox iokbc kqy yeb pkdrobc lbyeqrd pybdr yx drsc
    myxdsxoxd, k xog xkdsyx, myxmosfon sx vslobdi, kxn nonsmkdon dy dro
    zbyzycsdsyx drkd kvv wox kbo mbokdon oaekv.

    xyg go kbo oxqkqon sx k qbokd msfsv gkb, docdsxq grodrob drkd xkdsyx,
    yb kxi xkdsyx cy myxmosfon kxn cy nonsmkdon, mkx vyxq oxnebo. go kbo
    wod yx k qbokd lkddvo-psovn yp drkd gkb. go rkfo mywo dy nonsmkdo k
    zybdsyx yp drkd psovn, kc k psxkv bocdsxq zvkmo pyb dryco gry robo
    qkfo drosb vsfoc drkd drkd xkdsyx wsqrd vsfo. sd sc kvdyqodrob psddsxq
    kxn zbyzob drkd go cryevn ny drsc.

    led, sx k vkbqob coxco, go mkx xyd nonsmkdo -- go mkx xyd myxcombkdo
    -- go mkx xyd rkvvyg -- drsc qbyexn. dro lbkfo wox, vsfsxq kxn nokn,
    gry cdbeqqvon robo, rkfo myxcombkdon sd, pkb klyfo yeb zyyb zygob dy
    knn yb nodbkmd. dro gybvn gsvv vsddvo xydo, xyb vyxq bowowlob grkd go
    cki robo, led sd mkx xofob pybqod grkd droi nsn robo. sd sc pyb ec dro
    vsfsxq, bkdrob, dy lo nonsmkdon robo dy dro expsxscron gybu grsmr droi
    gry pyeqrd robo rkfo drec pkb cy xylvi knfkxmon. sd sc bkdrob pyb ec
    dy lo robo nonsmkdon dy dro qbokd dkcu bowksxsxq lopybo ec -- drkd
    pbyw droco ryxybon nokn go dkuo sxmbokcon nofydsyx dy drkd mkeco pyb
    grsmr droi qkfo dro vkcd pevv wokcebo yp nofydsyx -- drkd go robo
    rsqrvi bocyvfo drkd droco nokn crkvv xyd rkfo nson sx fksx -- drkd
    drsc xkdsyx, exnob qyn, crkvv rkfo k xog lsbdr yp pboonyw -- kxn drkd
    qyfobxwoxd yp dro zoyzvo, li dro zoyzvo, pyb dro zoyzvo, crkvv xyd
    zobscr pbyw dro okbdr."""

「平文に直せ」というプログラムをいかに書くかという問題の解説

シーザー暗号がどういうものであるか(特定の文字を、それよりも辞書順に特定の数だけ後ろ(または前)にある文字と置き換える)がわかっていれば,そして平文が我々の未知の言語ではないと仮定できるなら,ブルートフォースで解くのが簡単だ。

平文は長くなくてもよい(長くしているのは,文字頻度を調べるためにすぎない)ので,冒頭だけを取り上げる。

cryptogram = """pyeb cmybo kxn cofox iokbc kqy yeb pkdrobc lbyeqrd pybdr yx drsc
    myxdsxoxd, k xog xkdsyx, myxmosfon sx vslobdi, kxn nonsmkdon dy dro
    zbyzycsdsyx drkd kvv wox kbo mbokdon oaekv."""
    
c = Char[cryptogram...];

# c ="abcdefghijklmnopqrstuvwxyz" # プログラムのテスト用

以下を実行すれば,25 通りの解読例が出力されるので,ちらっと見ただけで,正解がわかる。

for i = 1:25
    text = ""
    for j in c
        code = Int(j) 
        if 'a' <= j <= 'z'
            code += i
            code = code > Int('z') ? code - Int('z') + Int('a') - 1 : code
        end
        text = text * string(Char(code))
    end
    println("$i: $text\n")
end

#=====
  :
15: entq rbnqd zmc rdudm xdzqr zfn ntq ezsgdqr aqntfgs enqsg nm sghr
bnmshmdms, z mdv mzshnm, bnmbdhudc hm khadqsx, zmc cdchbzsdc sn sgd
oqnonrhshnm sgzs zkk ldm zqd bqdzsdc dptzk.

16: four score and seven years ago our fathers brought forth on this
continent, a new nation, conceived in liberty, and dedicated to the
proposition that all men are created equal.

17: gpvs tdpsf boe tfwfo zfbst bhp pvs gbuifst cspvhiu gpsui po uijt
dpoujofou, b ofx obujpo, dpodfjwfe jo mjcfsuz, boe efejdbufe up uif
qspqptjujpo uibu bmm nfo bsf dsfbufe frvbm.
  :
=====#

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

PVアクセスランキング にほんブログ村

PVアクセスランキング にほんブログ村