本文实例讲述了Python实现的凯撒密码算法。分享给大家供大家参考,具体如下:
一 介绍
凯撒密码是一种非常古老的加密方法,相传当年凯撒大地行军打仗时为了保证自己的命令不被敌军知道,就使用这种特殊的方法进行通信,以确保信息传递的安全。他的原理很简单,说到底就是字母于字母之间的替换。下面让我们看一个简单的例子:“baidu”用凯撒密码法加密后字符串变为“edlgx”,它的原理是什么呢?把“baidu”中的每一个字母按字母表顺序向后移3位,所得的结果就是刚才我们所看到的密文。
二 代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
# -*- coding:utf-8 -*-
import os
#==================================================================#
# 凯撒密码(caesar)是最早的代换密码,对称密码的一种 #
# 算法:将每个字母用字母表中它之后的第k个字母(称作位移值)替代 #
#==================================================================#
def encryption():
str_raw = raw_input ( "请输入明文:" )
k = int ( raw_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 = int ( raw_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 "您的输入有误!" )
|
三 运行结果
希望本文所述对大家Python程序设计有所帮助。
原文链接:https://blog.csdn.net/chengqiuming/article/details/78601096