zoukankan      html  css  js  c++  java
  • python凯撒密码

    凯撒密码

    简介:凯撒密码(Caesar)是最早的代换密码,对称密码的一种

    算法:将每个字母用字母表中它之后的第k(称作位移值)个字母替代

    代码:

    #-*-coding:utf-8-*-
    __author__ = 007
    __date__ = 2016 / 02 / 04
    
    
    #==================================================================#
    #         凯撒密码(caesar)是最早的代换密码,对称密码的一种                #
    #   算法:将每个字母用字母表中它之后的第k个字母(称作位移值)替代            #
    #==================================================================#
    
    def encryption():
        str_raw = raw_input("请输入明文:")
        k = input("请输入位移值:")
        str_change = str_raw.lower()
        str_list = list(str_change)
        str_list_encry = str_list
        i = 0
        while i < len(str_list):
            if ord(str_list[i]) < 123-k:
                str_list_encry[i] = chr(ord(str_list[i]) + k)
            else:
                str_list_encry[i] = chr(ord(str_list[i]) + k - 26)
            i = i+1
        print "加密结果为:"+"".join(str_list_encry)
    
    def decryption():
        str_raw = raw_input("请输入密文:")
        k = input("请输入位移值:")
        str_change = str_raw.lower()
        str_list = list(str_change)
        str_list_decry = str_list
        i = 0
        while i < len(str_list):
            if ord(str_list[i]) >= 97+k:
                str_list_decry[i] = chr(ord(str_list[i]) - k)
            else:
                str_list_decry[i] = chr(ord(str_list[i]) + 26 - k)
            i = i+1
        print "解密结果为:"+"".join(str_list_decry)
    
    while True:
        print u"1. 加密"
        print u"2. 解密"
        choice = raw_input("请选择:")
        if choice == "1":
            encryption()
        elif choice == "2":
            decryption()
        else:
            print u"您的输入有误!"
    
    #if __name__ == "__main__":
    #    main

    运行结果:

    /usr/bin/python /Users/007/module/test.py
    1. 加密
    2. 解密
    请选择:1
    请输入明文:asdf
    请输入位移值:8
    加密结果为:ialn
    1. 加密
    2. 解密
    请选择:2
    请输入密文:ialn
    请输入位移值:8
    解密结果为:asdf

    知识点:

    ord()

    ord(c) -> integer

    参数是一个ascii字符,返回值是对应的十进制整数

    实例:

    1 In[2]: ord("a")
    2 Out[2]: 97

    chr()

    chr(i) -> character

    参数是0 - 256 的一个整数,返回值是当前整数对应的ascii字符。参数可以是10进制也可以是16进制的形式

    实例:

    1 In[3]: chr(97)
    2 Out[3]: 'a'
    3 In[4]: chr(0x61)
    4 Out[4]: 'a'
  • 相关阅读:
    如何垂直居中一个浮动元素?
    微信小程序vant-search获取不到输入的搜索内容踩坑
    关于微信小程序无法使用css3过度属性transition以及微信小程序如何利用api进行画面过度的展示
    Spring Shedule Task之注解实现 (两次启动Schedule Task 的解决方案)
    学习站点记录
    Spring 通过配置文件注入 properties文件
    Liunx下安装jdk
    Mybatis使用generator自动生成映射配置文件信息
    Tomcat容器虚拟路径设置
    Spring init-method和destroy-method 的使用
  • 原文地址:https://www.cnblogs.com/andr01la/p/5182319.html
Copyright © 2011-2022 走看看