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'
  • 相关阅读:
    C# 分布式自增ID算法snowflake(雪花算法)
    C# DateTime日期格式化
    HTTP响应状态码参考
    VS2019已还原ReSharper的功能
    2019前端UI框架排行榜
    2019年ASP.NET Core学习路线
    jumpserver堡垒机安装
    Linux shell 时间操作(取昨天 前天)
    nfs共享文件搭建
    zabbix agent配置详解(windows)
  • 原文地址:https://www.cnblogs.com/andr01la/p/5182319.html
Copyright © 2011-2022 走看看