博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python-凯撒密码
阅读量:7041 次
发布时间:2019-06-28

本文共 1881 字,大约阅读时间需要 6 分钟。

凯撒密码

简介:凯撒密码(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.py1. 加密2. 解密请选择:1请输入明文:asdf请输入位移值:8加密结果为:ialn1. 加密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'

 

转载于:https://www.cnblogs.com/andr01la/p/5182319.html

你可能感兴趣的文章
再破博客园登录
查看>>
Entity Framework在WCF中序列化的问题
查看>>
OpenCL快速入门
查看>>
选择生成日报表,月报表,年报表
查看>>
使用位操作
查看>>
Babelfish(二分)
查看>>
JS 中如何判断 undefined 和 null
查看>>
ftk学习记录(一个进度条文章)
查看>>
log4j直接输出日志到flume
查看>>
非正确使用浮点数据由项目产生BUG讨论的问题
查看>>
PHP5中的stdClass
查看>>
IntelliJ IDEA Community Edition 14.1.4下使用 Apache-Subversion搭建代码管理环境
查看>>
四种可变交流swap方法
查看>>
Lucene中的 Query对象
查看>>
二分基础
查看>>
物流英语
查看>>
[iOS]iOS8可用的识别用户方式(idfa、UUID、idfv)
查看>>
hdu1507--二分图最大匹配
查看>>
排序(6)---------归并排序(C语言实现)
查看>>
jsp 中对jar 包的引用
查看>>