今天西南民大的老哥,發(fā)我一道i春秋上的題局装,題目名字over the hill,然后就有了這篇劳殖,也是第一篇铐尚。
先介紹一下hill,Hill 密碼是一種多字母代替密碼哆姻。Hill 密碼要求首先將明文分成同等規(guī)模的若干個(gè)分組(最后一個(gè)分組不足時(shí)需要填充)宣增,每一個(gè)分組被整體加密變換,即 Hill 密碼屬于分組加密矛缨。
加密過(guò)程~爹脾!
先將26個(gè)英文字母用0-25進(jìn)行編號(hào)。
下面用兩個(gè)題箕昭,來(lái)介紹兩個(gè)師傅的腳本灵妨。
一、安恒杯的一道月賽--爬坡道
經(jīng)過(guò)一系列操作落竹,步驟省略泌霍,得到最重要的內(nèi)容
矩陣:
3?? 1
2?? 1
密文:
mttpjbpexfdzcegtdzeanutg
這里貼一個(gè)師傅的腳本,c語(yǔ)言版述召。
鏈接:https://pan.baidu.com/s/1WjzDJaSHGB2JmA79VLfHQQ
提取碼:1f3g
二朱转、i春秋--over the hill
下面是師傅的腳本
import?numpy
from?sage.all?import?*
alphabet?=?("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ123456789_{}")
n?=?len(alphabet)
Zn?=?IntegerModRing(n)
secret??=?[[54,?53,?28,?20,?54,?15,?12,?7],
??????????[32,?14,?24,?5,?63,?12,?50,?52],
??????????[63,?59,?40,?18,?55,?33,?17,?3],
??????????[63,?34,?5,?4,?56,?10,?53,?16],
??????????[35,?43,?45,?53,?12,?42,?35,?37],
??????????[20,?59,?42,?10,?46,?56,?12,?61],
??????????[26,?39,?27,?59,?44,?54,?23,?56],
??????????[32,?31,?56,?47,?31,?2,?29,?41]]
secret?=?matrix(Zn,?secret).inverse()
ciphertext?=?"7Nv7}dI9hD9qGmP}CR_5wJDdkj4CKxd45rko1cj51DpHPnNDb__EXDotSRCP8ZCQ"
blocks?=?[ciphertext[i?:?i?+?secret.ncols()]?for?i?in?range(0,?len(ciphertext),?secret.ncols())]
plaintext?=?''
for?block?in?blocks:
????decrypted_block?=?secret?*?matrix(Zn,?[alphabet.find(c)?for?c?in?block]).transpose()
????plaintext?+=??''.join(alphabet[int(i[0])]?for?i?in?decrypted_block)
print?plaintext
在線運(yùn)行網(wǎng)站:http://sagecell.sagemath.org/
到這里就結(jié)束了,腳本都是師傅們的积暖,很慚愧藤为,共勉吧。
over