用Python2.7.10编写凯撒密码加密和解密程序

用Python2.7.10编写凯撒密码加密和解密程序,第1张

s = raw_input('[开始加密]please input your str:')

s = list(s)

n = 0

for sw in s:

    s[n] = chr(ord(sw)+3)

    n = n + 1

sout = ''

for sw2 in s:

    sout = sout + sw2

print '[加密结果]:',sout

解密的类似,主要用到ord、chr函数。

# codinng=utf-8

x = 'a b c d e f g h i j k l m n o p q r s t u v w x y z'split(' ')

y = 'n o p q r s t u v w x y z a b c d e f g h i j k l m'split(' ')

X = map(lambda x: xupper(), x)

Y = map(lambda x: xupper(), y)

dict_kaisa = dict(zip(x + X, y + Y))  # 创建一个字典, 键为原字符串, 值为加密字符串

# 定义凯撒加密函数, 输入字符串, 输出凯撒加密后字符串

def kaisa(string):

    result = []

    for i in range(len(string)):

        if string[i] in dict_kaisakeys():

            resultappend(dict_kaisa[string[i]])

        else:

            resultappend(string[i])

    return ''join(result)

print(kaisa('The Zen of Python'))  # 结果为Gur Mra bs Clguba

凯撒密码是对字母整体进行偏移的一种变换加密。因此,建立一个字母表,对明文中每个字母,在这个字母表中偏移固定的长度即可得到对应的密文字母。

最基本的实现如下:

def caesarcipher(s: str,rot: int=3) ->str:

    _ = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'

    encode = ''

    i = 0

    for c in s:

        try:

            encode += _[(_index(cupper()) + rot) % len(_)]

        except (Exception,) as e:

            encode += c

    return encode

print(caesarcipher('hellow'))

print(caesarcipher('KHOORZ', -3))

如果要求解密后保持大小写,那么,字母表_还需要包含所有小写字母并且index时不对c做upper处理

同样的,也可以在字母表中追加数字,各种符号,空格等

凯撒密码是罗马扩张时期朱利斯• 凯撒(Julius Caesar)创造的,用于加密通过信使传递的作战命令。它将字母表中的字母移动一定位置而实现加密。例如如果向右移动 2 位,则 字母 A 将变为 C,字母 B 将变为 D,…,字母 X 变成 Z,字母 Y 则变为 A,字母 Z 变为 B。

因此,假如有个明文字符串“Hello”用这种方法加密的话,将变为密文: “Jgnnq” 。而如果要解密,则只要将字母向相反方向移动同样位数即可。如密文“Jgnnq”每个字母左移两位 变为“Hello” 。这里,移动的位数“2”是加密和解密所用的密钥。

该程序既可用于加密又可用于解密。只要传入明文和偏移量即可加密,解密需要传入密文和负的偏移量就可以解密。

输出的结果:

凯撒密码由于加解密比较简单,密钥总共只有 26 个,攻击者得到密文后即使不知道密钥,也可一个一个地试过去,最多试 26 次就可以得到明文。

这里不光根据 offset 偏移进行加密,还加上了字符所在的下标进行混合加密。

输出的结果:

以上就是关于用Python2.7.10编写凯撒密码加密和解密程序全部的内容,包括:用Python2.7.10编写凯撒密码加密和解密程序、python凯撒密码实现、如何用python编写凯撒密码 等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10171245.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存