Hello,我是小恐龍。今天編一個超燒腦算法——換位密碼。先來了解一下什麼是換位密碼:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnLldTZ0IWO1QTYxYmZiZGN4IWZ0QzN1QWM2QGOlZWO1M2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
明文:hello,everyone.iamminidinosaur.
密鑰:(1 5 4)
密文:leloheevr,eon.ymamiiiidnnusaro****.
對比一下代碼運作結果:
這種置換密碼的原理是:
把明文按照組寬(這裡選了5,當然也可以設定為任意數字)排列,不足部分用*補充;
密鑰(1 5 4)的含義是:把第1列換到第5列,第5列換到第4列,第4列換到第1列;
加密後的密文就是圖1中按照行讀取出來。
聰明的小夥伴是不是立刻想到了小恐龍以前發的“N字”加密?沒錯兒,“N字”加密也是一種置換加密技術,都是很難破解的:
scratch程式設計 黑客加密技術——N字加密
了解了加密原理,程式設計就不難了,圖1中右下角的數字是為了找規律做的标記:
注意看上面的3個連結清單在時刻變化的哦。任意輸入明文,列數和密鑰也是可以的:
夠不夠燒腦?其實加密代碼很簡單的,隻需自定義一個替換兩列的子產品:
解密也很類似:
有興趣的話就去試試看吧。過幾天等小恐龍有時間了,就用Python編一個全新的加密解密方法,那就看起來更高大上了。
歡迎關注: