文字加密解密

时隔九个月零二十二天15小时30分46秒,我,重新回归了!!!!!!!!!!!

而今天,我给大家带来一个文字加密解密器。

废话不多说,上代码!

def jiami():  
    shuru = input("拼音(每个字中间加空格):").split()  
    v = ""  
    for j in shuru:  
        for i in j:  
            n = ord(i)
            if len(shuru)%2==0:
                x = bin(n)[2:]
            else:
                x = oct(n)[2:]
            v += x  
            v += " "  
        v += "|"  
    print(v.rstrip(" "))
def jiemi():  
    shuru = input("加密后的加密码:").split("|")  
    v = ""  
    for i in shuru:  
        words = i.split() 
        for j in words:  
            if j:
                if int(j)>1:
                    z = int(j, 8)
                else:
                    z = int(j,2)
                v += chr(z)  
        v += " "  
    print(v.rstrip(" "))
while True:
    m = input("加密还是解密?:")  
    if m == "加密" or m==1:  
        jiami()  
    elif m == "解密" or m==2:  
        jiemi()  
    else:  
        print("输入错误")

这个代码是如何实现加密解密的呢?

加密时,会通过文字在ascll码表中的位置转化成对应的数字

 

接着,再把数字转化成二进制或八进制(bin函数和oct函数)。

最后,把一个拼音的密文用空格隔开,把拼音用“|”隔开。

而解密就用对应的函数转化回来就行了。

隐藏彩蛋:

如果你在vscode中运行则会发生:

(每一次不一样)

所以,我“迫不得已”用上了 (远古版本)

感谢@Xculate 给我的安装包。

在一次偶然的运行时,我发现了一个原版python的“特性”。

没错!

如你所见,输入中文竟然没有报错!

放在vscode早就是“听取报错一片”了。

这到底是bug还是特性,来个大佬解释一下。

也不知道是不是版本太老了。

就到这里吧,散会!

  • 8
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值