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'

 

posted @ 2016-02-04 21:00  andr01la  阅读(3699)  评论(0编辑  收藏  举报