原理描述:
所谓栅栏密码,就是把要加密的明文分成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!')
来源:CSDN
作者:亦无凡
链接:https://blog.csdn.net/zmx2473162621/article/details/103962552