天天看點

栅欄密碼(Fence)——python解密

簡介

所謂栅欄密碼,就是把要加密的明文分成N個一組,然後把每組的第1個字連起來,形成一段無規律的話。 不過栅欄密碼本身有一個潛規則,就是組成栅欄的字母一般不會太多。(一般不超過30個,也就是一、兩句話)

實作

一般比較常見的是2欄的栅欄密碼。

比如明文:THEREISACIPHER

兩個一組,得到:TH ER EI SA CI PH ER

先取出第一個字母:TEESCPE

再取出第二個字母:HRIAIHR

連在一起得到密文:TEESCPEHRIAIHR

而解密的時候,我們先把密文從中間分開,變為兩行:

T E E S C P E

H R I A I H R

再按上下上下的順序組合起來:

得到明文:THEREISACIPHER

代碼

函數(字元串,間隔)

def enFence(string, space):
   s = ""
   for i in range(0, space):
       for j in range(i, len(string), space):
           # 不能越界
           if j < len(string):
               s += string[j]
   print(s)


def deFence(string, space):
   s = ""
   if len(string) % space == 0:
       key = len(string) // space
   else:
       key = len(string) // space + 1
   # 小于間隔繼續
   for i in range(0, key):
       for j in range(i, len(string), key):
           # 不能越界
           if j < len(string):
               s += string[j]
   print(s)

           

主函數

import Fence

if __name__ == "__main__":
    Fence.enFence("123456789", 3)
    Fence.deFence("147258369", 3)
           
栅欄密碼(Fence)——python解密

總結

這個也不是很常見,了解即可。

繼續閱讀