栅栏密码解密——Java实现
柵欄密碼
實驗目的:理解典型移位密碼的加解密原理
實驗原理:
柵欄密碼屬于古典密碼中最經典的移項式密碼,同之前講到的凱撒密碼等替 換式密碼代表了密碼學中最重要的兩個概念(擴散和混淆)
我們以2欄柵欄密碼為例來講解它的加密和解密過程。
加密過程:
明文:THERE_IS_A_CIPHERK
兩個一組,得到:(TH) (ER) (E_) (IS) (_A) (_C) (IP) (HE) (RK)
先每組中取出第一個字母:TEEI__IHR
再從每組中取出第二個字母:HR_SACPEK
連在一起得到密文:TEEI__IHRHR_SACPEK
解密過程:
而解密的時候,我們先把密文從中間分開,變為兩行:
TEEI__IHR
HR_SACPEK
再按上下上下的順序組合起來:
THERE_IS_A_CIPHERK
那么如何將2欄密碼擴展到多欄呢?在之前的明文中,CIPHER這個單詞之后加了一個下劃線,目的就是為了讓明文字符串的長度是2的倍數,柵欄密碼的分欄的一個前提就是分的欄數需是明文長度的因數,這樣才會使得分出來的每個欄長度都一樣。
對于多欄,我們還是用上面的例子來講解。
上面的明文字符串(THERE-IS_A_CIPHER-)的長度是18=233 ,所以我們可以把它分為2,3,4,6,9欄,這里我們以6欄為例。
以每個元素相隔6個字符分割出柵欄。
第一欄:TII
第二欄:HSP
第三欄:E_H
第四欄:RAE
第五欄:E_R
第六欄:-C-
連接在一起得到密文:TIIHSPE_HRAEE_R-C-
實驗要求:
1.解密文本:_pry_iosncta_aguccropi_osieyghsrr_e-
2.將所有可能分的欄,均恢復出相應的明文
總結
以上是生活随笔為你收集整理的栅栏密码解密——Java实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mac tree命令
- 下一篇: 欧几里得算法原理