栅栏密码加密与解密以及特征

…衆ロ難τιáo~ 提交于 2020-01-14 02:14:06

原理描述:

所谓栅栏密码,就是把要加密的明文分成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!')

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!