凯撒密码加密,解密的实现,可以在项目上使用

import string"""
凯撒密码:
本质:
A B C D EA B C D E移动一定的位置后,获取对应移动后的字符,这里面的‘偏移量就是2也就是shift=2生成key
代码说明;
upperchar26=string.ascii_uppercase  #获取26个大写字母的字符串
keydic={}  获取一个字典keydic={原始字符:移动后的字符},后期加密或者解密使用的对应字典
gennerate_key(shift)  里面的shift是偏移量
keydic[char]=upperchar26[(num+shift)%len(upperchar26)]-->keydic={原始字符:移动后的字符}shift=2后
generate_key产生的结果,都是偏移了两位
{'A': 'C', 'B': 'D', 'C': 'E', 'D': 'F', 'E': 'G', 'F': 'H', 'G': 'I', 'H': 'J', 'I': 'K', 'J': 'L', 'K': 'M', 'L': 'N', 'M': 'O', 'N': 'P', 'O': 'Q', 'P': 'R', 'Q': 'S', 'R': 'T', 'S': 'U', 'T': 'V', 'U': 'W', 'V': 'X', 'W': 'Y', 'X': 'Z', 'Y': 'A', 'Z': 'B'}
"""def generate_key(shift):upperchar26 = string.ascii_uppercasekeydic = {}num = 0for char in upperchar26:keydic[char] = upperchar26[(num + shift) % len(upperchar26)]num += 1return keydic"""
加密函数,参数message是需要加密的字符串
从’message‘需要加密的字符串中遍历取出所有字符串--->
判断取出的每个字符是不是在keydic这个字典中,如果在里面就是取出字典中对应偏移量的字符
如果没有在里面就是保持原来的字符,“ABCD-EFGH-JKLM”中的’-‘就是保持原来的样子"""def encrypt(keydic, message):ciphers = ""for c in message:if c in keydic:ciphers += keydic[c]else:ciphers += creturn ciphers##==================================
##================解密程序=================="""
解密的另外一种实现:
跟加密布局类似:
1.创建加密字典函数
2。创建解密函数""""""
get_deccry_keydic(shift)-->函数目的就是
把原来的字典的值变成键,value--->key
"""def get_decry_keydic(shift):upperchar26 = string.ascii_uppercasekeydic = {}num = 0for char in upperchar26:keydic[upperchar26[(num + shift) % len(upperchar26)]] = charnum += 1return keydic"""
deccrypt-->解密函数,参数是key字典,以及需要解密的字符串
“if c in string.ascii_uppercase:” 这个目的是为了解决我们只解码’大写字母‘,如果
不是大写字母或者是特殊字符的话,就是保持原来的样子。"""def deccrypt(keydic, cipher):decstrs = ""for char1 in cipher:# print(char1)#if char1 in string.ascii_uppercase:if char1 in keydic:decstrs += keydic[char1]else:decstrs += char1return decstrs##================主程序==================
if __name__ == '__main__':# ============新函数测试===================crykeydic = generate_key(2)# crykeydic=generate_key(26)# print(crykeydic)# 待加密的字符messages = "ABCD-EFGH-JKLM"# messages="ABCDEFGHJKLM"# 进行加密处理,获取加密后的字符print(f"原始的字符串是:{messages}")ciphers = encrypt(crykeydic, messages)# print(ciphers)print(f"加密后的字符串是:{ciphers}")print("======解密中...=======")dec_dic = get_decry_keydic(2)  # 这里的数字2与上述crykeydic=generate_key(2) 保持数字一样decstr = deccrypt(dec_dic, ciphers)print(f"解密后的字符串是:{decstr}")

凯撒密码加密,解密的实现,可以在项目上使用相关推荐

  1. 凯撒密码加密解密C语言详细代码

    凯撒密码加密解密C语言详细代码 凯撒密码 又叫循环移位密码.它的加密方法,就是将明文中的每个字母用此字符在字母表中后面第k个字母替代.它的加密过程可以表示为下面的函数: E(m)=(m+k) mod ...

  2. 凯撒密码加密解密——Java代码(密码学)

    凯撒密码加密解密--Java代码(密码学) 凯撒密码: 恺撒密码(英语:Caesar cipher),或称恺撒加密.恺撒变换.变换加密,是一种最简单且最广为人知的加密技术.它是一种替换加密的技术,明文 ...

  3. C++凯撒密码加密解密算法

    一.算法描述 凯撒密码的加密解密算法,逻辑很简单,就是两个公式: 比如说下面这个例子的加密解密公式,就是位移量为3时的结果 加密公式 f(a)=(a+3) mod 26 解密公式 f(a)=(a+23 ...

  4. Python编程:实现凯撒密码加密解密

    凯撒密码 原理: 通过把字母移动一定的位数来实现加解密 明文中的所有字母从字母表向后(或向前)按照一个固定步长进行偏移后被替换成密文. 例如: 当步长为3时,A被替换成D,B被替换成E,依此类推,X替 ...

  5. Matlab凯撒密码加密解密

    Pratice problem: Bob wants to send the message "Start sending messages at 8:30" to Alice i ...

  6. 2.凯撒密码加密解密(C)

    明文空间M.密文空间C都是和密钥空间K满足,M=C=K={0,1,2,-,25}=Z_26 ,即把26个英文字母与整数0,1,2,-,25一一对应. 加密变换,E={E:Z26→Z26, Ek (m) ...

  7. C++实现古典密码-凯撒密码加密解密算法

    文章目录 第一部分 Caesar密码简介 1.1 基本思想 1.2 历史沿革 第二部分 Caesar密码的C++实现 第一部分 Caesar密码简介 1.1 基本思想 在密码学中,恺撒密码(英语:Ca ...

  8. python凯撒密码加密写入文件_Python用户名密码登录系统(MD5加密并存入文件,三次输入错误将被锁定)及对字符串进行凯撒密码加解密操作...

    #-*- coding: gb2312 -*-#用户名密码登录系统(MD5加密并存入文件)及对字符串进行凯撒密码加解密操作#作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/k ...

  9. 凯撒密码加密、解密、暴力破解(C语言实现)

    C语言设计,替换密码开发设计,2022年9月信息安全课程作业分享 #include<stdio.h> #include<string.h> #include<stdlib ...

  10. 5.3使用凯撒密码加密和解密英文文件python

    1本关任务:使用凯撒密码加密和解密英文文件.具体要求如下: (1)接收一个字符串为参数,如果参数值为加密,要求用户输入一个要加密的文件名,再输入一个单词做为密钥发生器,用于计算偏移量,对文件中的内容进 ...

最新文章

  1. R可视化包ggplot2修改可视化图像的字体大小
  2. FFT对信噪比的增益计算
  3. linux按时间升序排列文件,Linux展示以时间生升序显示文件
  4. super在python3和python2_Python扩展与 – 使用super()python 3 vs python 2
  5. oracle告警日志备份,教你怎样用Oracle方便地查看报警日志错误
  6. 平塘天眼和大数据有什么关系_贵州平塘的中国天眼,值得去吗?除了天眼,平塘还有什么好玩?...
  7. Shell脚本 小程序演示
  8. 深入浅出mysql 出版社_深入浅出mysql
  9. 直接通过手机抓取GPS的qxdm日志
  10. python3.4勾股定理代码_python计算器代码
  11. Vue系列之-Idea进行Vue前端调试
  12. 详细写出拆卸计算机的步骤和过程,CPU风扇(INTEL)的详细拆卸和安装方法_计算机软件和应用程序_IT / computer_special...
  13. 项目分包后出的测评报告能盖cnas/cma标识章吗
  14. 漫画 | 程序员职场屌丝逆袭,一举惊艳所有人!
  15. 国开大学计算机基础应用形考作业三答案,国家开放大学《计算机应用基础》形考作业三答案.doc...
  16. 这个高薪行业正在大量招人,你会考虑吗?
  17. 《那些年我们一起追过的女孩》你真的看懂了吗?
  18. Pytorch的backward()与optim.setp()的理解
  19. matlab求pai的近似值n取100,求π的近似值Matlab程序
  20. Attempting to operate on hdfs namenode as root

热门文章

  1. keras训练cifar10数据集源代码
  2. bzoj 1603 打谷机
  3. VirtualBox没有64位选项,无法安装64位的解决方法(zhuan)
  4. 基于斥力-张力模型的网络拓扑布局算法(php代码)
  5. 如何在vs2010中使用SSE指令集
  6. 【ubuntu操作系统】ubuntu系统下第一个C语言程序
  7. 抽象工厂模式与单件模式C++混合实现
  8. 城市不透水面空间分析——以宁波为例
  9. SSM - 全局跨域处理
  10. python爬虫实践