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'