zoukankan      html  css  js  c++  java
  • py 二级习题(加密与解密)

    题目:

    1、比如说,我想    “我喜欢月月”  这句话加密即:将字符串中的每个字符的unicode值全都向后移动三位,即unicode 值加3,然后输出。

    2、将按照上述规则加密的文字解密即:将字符串中的每个字符的unicode值全都向前减三。

    #caesarencode programme
    
    
    while True:
        txt = input("please type you word:")
    
    for i in txt:
        if "a" <= i <="z":
            #这是最关键的一步,通过对26取余数,可以再a-z,或者在A-Z,这26个英文字母中重复
            print(chr(ord("a")+(ord(i)-ord("a")+3)%26),end = '')
        elif "A"<= i <="Z":
            print(chr(ord("A")+(ord(i)-ord("A")+3)%26),end = '')
        else:
            print(i,end = '')
    
    #anather way
    txt = input("please input you number")
    c = 0x4e00
    di = {}
    for i in range(20902):
    
    #  这也是加密的方法,用的是字典的方法,并且将你输入的每个文字,都转换成了对第一个中文字符的移动,当然这是对中文进行加密,中文的unicode 值范围在0x4e00-0x9fa5之间,一共有20902个文字,当然这里每个要加密的文字向后移动了10451个位置。
        di[chr(c+i)] = chr((i+10451)%20902 + c)  #将所有文字全部移动104521个位置,然后放在字典里,存起来。
        print(len(di))
    #对于输入的每个字符,从字典里去找。
    for i in txt:
        print(("输出(加解密后)" +di.get(i),end = '')  #another way:   print("输出(加解密后)" + "".join([di.get(i) for i in txt]))
        

    我用的第二种方法:

     当然还有解密的方法,未完待续。

  • 相关阅读:
    GET POST区别
    http1.0 1.1 2.0区别
    分布式系统理论之Quorum机制
    MySQL解析过程、执行过程
    redis常见问题和解决方案
    Windows下安装Linux虚拟机的用途和好处
    ping,telnet,ssh命令的理解
    强化学习入门 第五讲 值函数逼近
    强化学习入门第四讲 时间差分方法
    强化学习基础 第三讲 蒙特卡罗方法
  • 原文地址:https://www.cnblogs.com/zijidefengge/p/11546953.html
Copyright © 2011-2022 走看看