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

原理描述:

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

发布了40 篇原创文章 · 获赞 18 · 访问量 7573

猜你喜欢

转载自blog.csdn.net/zmx2473162621/article/details/103962552
今日推荐