原理描述:
所謂柵欄密碼,就是把要加密的明文分成N個一組,然後把每組的第1個字連起來,形成一段無規律的話。 不過柵欄密碼本身有一個潛規則,就是組成柵欄的字母一般不會太多。(一般不超過30個,也就是一、兩句話)
加密特徵:
總體來說字母內容不變,僅是字母順序被“打亂”;加密的時候要選擇組數,所以解密的話只能逆推所有組數,然後選擇一個適合的
腳本實現:
在線網址:https://www.qqxiuzi.cn/bianma/zhalanmima.php
代碼來源於:https://blog.csdn.net/qq_41420747/article/details/88599774
# 柵欄密碼加密解密
# @ChenYe
def crypto():
plain = input('輸入明文:')
n = int(input('輸入每組字數'))
ans = ''
for i in range(n):
for j in range(int(plain.__len__()/n + 0.5)):
try:
ans += plain[j*n+i]
except:
pass
return ans
def decrypto():
plain = input('輸入密文:')
for n in range(2,plain.__len__()-1):
ans = ''
for i in range(n):
for j in range(int(plain.__len__() / n + 0.5)):
try:
ans += plain[j * n + i]
except:
pass
print(ans)
if __name__ == '__main__':
print('柵欄密碼加密/解密.py')
while(True):
choice = input('功能選擇:\n1:加密\n2:解密\n')
# 加密
if choice == '1':
print(crypto())
# 解密
elif choice == '2':
decrypto()
else:
print('choice error!')