天天看點

Scratch程式設計 燒腦算法——換位密碼

Hello,我是小恐龍。今天編一個超燒腦算法——換位密碼。先來了解一下什麼是換位密碼:

Scratch程式設計 燒腦算法——換位密碼

明文:hello,everyone.iamminidinosaur.

密鑰:(1 5 4)

密文:leloheevr,eon.ymamiiiidnnusaro****.

對比一下代碼運作結果:

Scratch程式設計 燒腦算法——換位密碼

這種置換密碼的原理是:

把明文按照組寬(這裡選了5,當然也可以設定為任意數字)排列,不足部分用*補充;

密鑰(1 5 4)的含義是:把第1列換到第5列,第5列換到第4列,第4列換到第1列;

加密後的密文就是圖1中按照行讀取出來。

聰明的小夥伴是不是立刻想到了小恐龍以前發的“N字”加密?沒錯兒,“N字”加密也是一種置換加密技術,都是很難破解的:

scratch程式設計 黑客加密技術——N字加密

了解了加密原理,程式設計就不難了,圖1中右下角的數字是為了找規律做的标記:

Scratch程式設計 燒腦算法——換位密碼

注意看上面的3個連結清單在時刻變化的哦。任意輸入明文,列數和密鑰也是可以的:

Scratch程式設計 燒腦算法——換位密碼
Scratch程式設計 燒腦算法——換位密碼

夠不夠燒腦?其實加密代碼很簡單的,隻需自定義一個替換兩列的子產品:

Scratch程式設計 燒腦算法——換位密碼

解密也很類似:

Scratch程式設計 燒腦算法——換位密碼

有興趣的話就去試試看吧。過幾天等小恐龍有時間了,就用Python編一個全新的加密解密方法,那就看起來更高大上了。

歡迎關注:

Scratch程式設計 燒腦算法——換位密碼

繼續閱讀