python凯撒加密(python凯撒加密数字)

http://www.itjxue.com  2023-04-03 19:09  来源:未知  点击次数: 

python中凯撒密码num=num+key是什么意思

python中凯撒密码num=num+key是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。根据查询相关公开信息,凯撒密码是古罗马凯撒大帝用来对军事情报进行加密的算法,它采用了替代方法将信息中的每一个英文字母循环替换为字母表序列中该字符后面的第k个字符(k为密钥)。加密方法:C=(P+k)mod26,P为原文字符,k为密钥,解密方法:P=(C-3)mod26。

python语言凯撒密码加密为什么要%26?

%26是确保加密后的值仍然在字母表范围内(当然为了能解密,前提条件是原文的字符也不能超过这26个字母)

为什么要%26呢?直接用原文的Unicode值加三再转换成字符不就可以了吗??---

凯撒密码应该是很古老的加密技术吧,那时候计算机都还没出现,ASCII码或者你说的unicode码更不存在。所以说表示字符的就那么26个。当然你说我可以创造一些字符啊,那也没问题,和直接用数字也没多少区别。但有可能保持这26个字母更能起到混淆视听的作用,毕竟它们可能不能一眼看出是密码。

不管在古代还是现代,增加字库都是有成本的,比如雕刻活字、设计字体等,能复用现有字体的话,打印传播密文的成本就大大降低。

python凯撒密码实现

#?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:?x.upper(),?x)

Y?=?map(lambda?x:?x.upper(),?y)

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

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

def?kaisa(string):

????result?=?[]

????for?i?in?range(len(string)):

????????if?string[i]?in?dict_kaisa.keys():

????????????result.append(dict_kaisa[string[i]])

????????else:

????????????result.append(string[i])

????return?''.join(result)

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

用Python语言从文件夹中提取文件进行凯撒加密?

import string

def kaisa(s, k): #定义函数 接受一个字符串s 和 一个偏移量k

lower = string.ascii_lowercase #小写字母

upper = string.ascii_uppercase #大写字母

before = string.ascii_letters #无偏移的字母顺序 小写+大写

after = lower[k:] + lower[:k] + upper[k:] + upper[:k] #偏移后的字母顺序 还是小写+大写

#分别把小写字母和大写字母偏移后再加到一起

table = ''.maketrans(before, after) #创建映射表

return s.translate(table) #对s进行偏移 即加密

s = input('请输入一个字符串:')

k = int(input('请输入一个整数密钥:'))

print(kaisa(s, k))

调用此函数

(责任编辑:IT教学网)

更多