【加密算法】凯撒密码的原理及Python实现 您所在的位置:网站首页 密位公式原理 【加密算法】凯撒密码的原理及Python实现

【加密算法】凯撒密码的原理及Python实现

2024-05-30 21:39| 来源: 网络整理| 查看: 265

我是一个甜甜的大橙子🍊,欢迎关注✉️! 我相信技术的力量💪 努力将所学分享给大家😎 你的点赞❤️分享🚀收藏📖就是对我最大的鼓励!

文章目录 凯撒密码的介绍原理Python实现ord()函数和chr()的介绍Python加密Python解密

凯撒密码的介绍

凯撒密码是已知最早、最简单的密码之一。它是一种替换密码,在这种密码中,明文中的每个字母都被“移位”到字母表中一定数量的位置。例如,移动1,A会被B取代,B会变成C,以此类推。这种方法以朱利叶斯·凯撒(Julius Caesar)的名字命名。 假设我们移位的值是6,掰起指头算一下,那么a对应的就是g,b对应h,c对应i等等。

加密前:i love csdn 加密后:o rubk iyjt

这样加密后看起来就像是一串无意义的字符串。

原理

通常加密和解密互为逆过程,我们知道如何加密,那么解密的方法也就清晰了,对于凯撒密码,只要我们知道“移位”的值k,那么就能对密文进行解密。 简化问题,我们做如下假设:

只考虑小写英文字母‘a’ = 0 ‘b’ = 1 ‘c’ = 2 … ‘z’ = 25

其中,word代表被加密字母,encrypt()代表加密函数,k代表移位值,那么加密过程的数学公式为:

encrypt(word) = (word + k) mod 26

解密过程的数学公式为:

decrypt(word) = (word - k) mod 26

Python实现 ord()函数和chr()的介绍

我们要用到ord()和chr()两个函数,先看下介绍。

chr() 用一个范围在 range(256)内的(就是0~255)整数作参数,返回一个对应的字符。 ord() 函数是 chr() 函数(对于8位的ASCII字符串)或 unichr() 函数(对于Unicode对象)的配对函数,它以一个字符(长度为1的字符串)作为参数,返回对应的 ASCII 数值,或者 Unicode 数值,如果所给的 Unicode 字符超出了你的 Python 定义范围,则会引发一个 TypeError 的异常。

a到z的编码为97-122. ASCII码表请点击这里

Python加密

加密时,如果遇到空格,我们选择不加密。

s = input('请输入要加密的字符串:') k = int(input('请输入移位值:')) s_encrypt = '' for word in s: if word == ' ': word_encrypt = ' ' else: word_encrypt = chr((ord(word)-ord('a') + k) % 26 + ord('a')) s_encrypt += word_encrypt print(s_encrypt) 请输入要加密的字符串:i love csdn 请输入移位值:6 o rubk iyjt Python解密 s = input('请输入要解密的字符串:') k = int(input('请输入移位值:')) s_decrypt = '' for word in s: if word == ' ': word_decrypt = ' ' else: word_decrypt = chr((ord(word)-ord('a') - k) % 26 + ord('a')) s_decrypt += word_decrypt print(s_decrypt) 请输入要解密的字符串:o rubk iyjt 请输入移位值:6 i love csdn

最近我在做算法题,包括Leecode和DMOJ等平台,水平还有限,有兴趣加个好友一起交流提高。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有