柵欄密碼按照排列的順序將明文(去掉空格)寫入 m 行 n 列的數組,按照行的順序將字符重新組合得到密文,這種方法稱為 m 欄柵欄密碼。比較常見的是 2 欄柵欄密碼。一般來說,是給定 m,然后通過加密文本的長度確定 n。以文本 ILoveYou,YouLoveMe,行數 m=4 為例:
(1) 首先將文本按如下方式排列,按列將文本排列成 m 行的柵欄
I | e | , | L | M |
---|---|---|---|---|
L | Y | Y | o | e |
o | o | o | v | |
v | u | u | e |
(2) 將文本按行取出,得到密文 Ie,LMLYYoeooovvuue
事實上,加密過程就是把明文按 m 個分組,先取每組第 1 個,再取每組第 2 個,空缺的部分跳過,直至全部取完為止
(1) 首先通過密文的長度 len = 18 和柵欄的欄數 m = 4 確定柵欄的列數 n;
計算 len / m 得到商 q 和余數 r,如果余數 r = 0,那么 n = q;否則 n = q + 1;
此處 n = 5
(2) 將密文按行排列,重新生成 m 行 n 列的數組
I | e | , | L | M |
---|---|---|---|---|
L | Y | Y | o | e |
o | o | o | v | |
v | u | u | e |
(3) 將上述數組由上至下,由左至右讀取,恢復明文 ILoveYou,YouLoveMe
事實上,解密過程就是先計算出 n 和 r 后,將密文分成 m 組,前 m - r 組按 n 為單位分組,后 r 組按 n - 1 為單位分組,按照類似加密的方式執行,還原出明文
(1) 計算出 n = 5,r = 2,mid = (m - r) · n = 10, Len = 18
(2) 前 mid 個密文以 5 為單位分組,后 Len - mid = 8 個密文以 n - 1 = 4 為單位分組,得到
I | L | o | v |
---|---|---|---|
e | Y | o | u |
, | Y | o | u |
L | o | v | e |
M | e |
(3) 按照加密的方式讀取分組,得到明文
def encrypt(plaintext: str, m: int): """ :param plaintext: 明文 :param m: 欄數 :return: 密文 """ ciphertext, length = [], len(plaintext) for i in range(m): # 取出每個分組第 i 個元素 for j in range(i, length, m): ciphertext.append(plaintext[j]) return ''.join(ciphertext)
def decrypt(ciphertext: str, m: int): """ :param ciphertext: 密文 :param m: 欄數 :return: 明文 """ plaintext, length = [], len(ciphertext) q, r = pmod(length, m) n = (q + 1) if r else q # 計算 n mid = n * (m - r) for i in range(n - 1): # 前 m-r 個分組 for j in range(i, mid, n): plaintext.append(ciphertext[j]) # 后 r 個分組 for j in range(mid + i, length, n - 1): plaintext.append(ciphertext[j]) # 前 m-r 個分組最后一個元素 for j in range(n - 1, mid, n): plaintext.append(ciphertext[j]) return ''.join(plaintext)
柵欄密碼除了上述的方式,還有一種為 W型柵欄,此處不作介紹
參考資料:《密碼學實驗教程》
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...
在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...
在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...
SJ-KRY誰唱的最好?三人的唱功不容小覷。結果真的很難比較。我個人想幫他們澄清一下,很多人說以唱抒情歌為主,這是不對的。他們三個是主唱,不管唱什么歌都是主唱。個人覺得圭賢唱的最好,這也是SM公司認可的。否則不能加入SJ成為初三十三,排名決定圭賢。SM公司按年齡排名。很明顯,SM公司不透露誰唱的最好。娛樂節目的主持人都說圭賢唱歌最好。k是圭賢英文名的第一個字母,其他兩個也是。他唱歌的特點是感情到位...
我的電腦的flash打不開了怎么辦?瀏覽器有時會提示Flash版本太低,無法使用。該解決方案包括:1.首先,檢查一下自己有沒有安裝。如果你不 t,下載安裝。2.開始菜單/控制面板/Flash播放器/更新/立即更新。按確定就行了。3.還有一種方法就是用騰訊電腦管家來修復。打開管家后,你會發現電腦診所的Flash版本太低,然后馬上點擊修復。flash插件安裝上也不能播放怎么弄?系統中可能有緩存,或者瀏...
成都東站早上幾點可以進站?成都東站到達時間。一般以最早的車次為準,沒有具體的時間限制。成都東站最早的列車時刻表是經過鐵路局考慮客觀現實因素適當延長的。一般春運暑運期間,會有一趟凌晨4點的航班,這意味著旅客需要提前一個小時左右等待,所以候機大廳排隊安檢驗票需要時間。成都東站早上幾點可以進站?您好,成都東站24小時開放?;疖囌居袃煞N:客運站和貨運站。一般乘客24小時上班。當然,小一點的車站,在晚上長時...