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'
  • 相关阅读:
    高斯消元学习
    HDU 4596 Yet another end of the world(解一阶不定方程)
    Codeforces Round #318 div2
    HDU 4463 Outlets(一条边固定的最小生成树)
    HDU 4458 Shoot the Airplane(计算几何 判断点是否在n边形内)
    HDU 4112 Break the Chocolate(简单的数学推导)
    HDU 4111 Alice and Bob (博弈)
    POJ 2481 Cows(线段树单点更新)
    HDU 4288 Coder(STL水过)
    zoj 2563 Long Dominoes
  • 原文地址:https://www.cnblogs.com/andr01la/p/5182319.html
Copyright © 2011-2022 走看看