【Educoder作业】※ 字符信息——凯撒加密

应读者要求,提前写了提前更出来。
整个作业我们主要就围绕ASCIIASCIIASCII码来做事,明确了计算机就是只存010101,连字符都是010101的。

T1 加密一个小写字母

只需要用chrchrchr和ordordord函数实现偏移即可。

########## Begin ##########
def enChar(x, key) :y = ''for i in x :y = y + chr(ord(i) + key)return y
########## End ##########
key = 2 #密钥(也就是偏移量)
for x in 'abcdefghijklmnopqrstuvwxyz': #对于所有小写字母y = enChar(x, key)                 #求x对应的密文字符print('%s -> %s' % (x, y))

T2 加密一个小写字母(续)

采用取模的方式,让加法固定在aaa到zzz里面即可。这个想法是比较实用的。

firstASCII = ord('a') #首个字符的ASCII码,请在enChar中使用
N = 26                #支持的字符总数,请在enChar中使用
########## Begin ##########
def enChar(x, key) :y = ''for i in x :# iy = y + chr((ord(x) + key - firstASCII) % 26 + firstASCII)return y
########## End ##########
key = 2 #密钥(也就是偏移量)
for x in 'abcdefghijklmnopqrstuvwxyz': #对于所有小写字母y = enChar(x, key)                 #求x对应的密文字符print('%s -> %s' % (x, y))

T3 加密一段文本

就判断一下每一个字符的ASCIIASCIIASCII在不在我们需要的范围里即可。

firstASCII = ord('a') #首个字符的ASCII码
N = 26                #支持的字符总数def enChar(x, key):   #加密字符x,key为密钥xid = ord(x)-firstASCIIyid = (xid+key) % Ny = chr(firstASCII+yid)return y
########## Begin ##########
def Caesar(x, key) :y = ''for i in x :dic = ord(i)if firstASCII <= dic < firstASCII + N :y = y + enChar(i, key)else :y = y + ireturn y
########## End ##########
key = 2                    #密钥
text = input()             #明文
enText = Caesar(text, key) #加密
print('%s -> %s' % (text, enText))

T4 解密一段文本

所谓解密其实就是加法变减法,在取模定义里减法就是通过不断的加模数来维持答案始终在000到mod−1mod-1mod−1里。

########## Begin ##########
firstASCII = ord('a') #首个字符的ASCII码
N = 26                #支持的字符总数def enChar(x, key):xid = ord(x)-firstASCIIyid = (xid+key) % Ny = chr(firstASCII+yid)return ydef Caesar(text, key):result = ''for x in text:if 'a'<=x<='z':x = enChar(x,key)result = result + xreturn resultkey = 2 #密钥
text = input()
enText = Caesar(text, (26 - key) % 26)
print('%s -> %s' % (text, enText))
########## End ##########

T5 扩展到可视字符

就扩展一下咯,还是只需要改那个ififif、firstASCIIfirstASCIIfirstASCII和NNN即可。

########## Begin ##########
firstASCII = 32 #首个字符的ASCII码
N = 95              #支持的字符总数def enChar(x, key):xid = ord(x)-firstASCIIyid = (xid+key) % Ny = chr(firstASCII+yid)return ydef Caesar(text, key):result = ''for x in text:#if 'a'<=x<='z': #若x是小写英文字母if 32 <= ord(x) <= 126 :x = enChar(x,key)result = result + xreturn resultkey = 2 #密钥
text = input()
enText = Caesar(text, key)
print('%s -> %s' % (text, enText))
########## End ##########

T6 扩展到汉字

讲道理和第五题是没有任何区别的,就是把我们字符的范围和初始扩展一下即可。

########## Begin ##########
firstASCII = 0 #首个字符的编码
N = 65536                #支持的字符总数def enChar(x, key):xid = ord(x)-firstASCIIyid = (xid+key) % Ny = chr(firstASCII+yid)return ydef Caesar(text, key):result = ''for x in text:if firstASCII <= ord(x) < firstASCII + N : #若x是可视字符x = enChar(x,key)result = result + xreturn resultkey = 2 #密钥
text = input()
enText = Caesar(text, key)
print('%s -> %s' % (text, enText))
########## End ##########

【Educoder作业】※ 字符信息——凯撒加密相关推荐

  1. 字符加密(凯撒加密)

    在密码学中,恺撒密码是一种最简单且最广为人知的加密技术.它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文.例如,当偏移量是3的时候,所有的字母A ...

  2. Python暴力破解凯撒加密的文本

    凯撒加密是一种经典加密算法,把文本中的每个英文字母替换为字母表中后面第k个字母.该加密算法的抗攻击能力比较弱,因为密钥(也就是k)的取值范围是固定的,很容易暴力破解.当然,也可以利用英文的统计特性(例 ...

  3. 蓝桥 卷“兔”来袭编程竞赛专场-09凯撒加密 题解

    赛题介绍 挑战介绍 恺撒密码也称恺撒加密.恺撒变换.变换加密,是一种最简单且最广为人知的加密技术.采用的是替换方法对信息中的英文字符循环替换为字母表序列中该字符后面或前面的第 N 个字符.例如当  N ...

  4. Java加密算法—凯撒加密实现以及暴力破解

    目录 1.概念 2.加密实现 3.解密实现 4.频率分析法破解 1.概念 凯撒密码最早由古罗马军事统帅盖乌斯·尤利乌斯·凯撒在军队中用来传递加密信息,故称凯撒密码.这是一种位移加密方式,只对26个字母 ...

  5. 简单移位密码——凯撒加密、解密算法

    简单移位密码--凯撒加密.解密算法 移位密码是简单的替换密码(simple substitution cipher),即将明文的一个字符用相应的一个密文字符替换. 算法描述:设P=C=K=Z26,对k ...

  6. 凯撒加密的最简单的理解与实现(Java版)

    凯撒加密 前言 这是我的第一篇博客希望以后多多关注. 这篇文章起源于我在人工智能导论上的一次摸鱼◔ ‸◔,当时老师一节课都在脱离课本介绍,讲什么网络安全之类的问题,后面还举例子了一些加密方法巴拉巴拉, ...

  7. 古典密码-凯撒加密和解密

    在密码学中,恺撒密码是一种最简单且最广为人知的加密技术. 凯撒密码最早由古罗马军事统帅盖乌斯·尤利乌斯·凯撒在军队中用来传递加密信息,故称凯撒密码.这是一种位移加密方式,只对26个字母进行位移替换加密 ...

  8. C语言凯撒密码字母向后偏移三位,凯撒加密解密(java字母移位)

    1.设计思想:加密就是将字符数据转化为ASC码表中的数字,a-w之间通过加3之后再转化为字符型输出,x-z之间通过转化为ASC码表中的数字后减去23再转化为字符型输出.解密就是将字符数据转化为ASC码 ...

  9. 趣味Python-初级凯撒加密

    凯撒加密 凯撒密码是古罗马凯撒大帝用来对军事情报进行加密的算法,它采用了替换方 法对信息中的每一个英文字符循环替换为字母表序列该字符后面第三个字符, 对应关系如下: 原文:A B C D E F G ...

最新文章

  1. oracle删除后电脑卡,彻底删除oracle服务 -电脑资料
  2. 对下图所示的连通网络G,用克鲁斯卡尔(Kruskal)算法求G的最小生成树T,请写出在算法执行过程中,依次加入T的边集TE中的边。说明该算法的基本思想及贪心策略,并简要分析算法的时间复杂度
  3. 一文了解类别型特征的编码方法
  4. Java开发需要达到什么样的水平才称得上架构师?
  5. JavaScript 删除Cookie
  6. [转载] python多重继承初始化_关于python多重继承初始化问题
  7. maven scala plugin 使用教程笔记之jvmArgs配置-D参数中使用.md
  8. Windows 7 “Tunnel adapter Local Area Connection” 现象(IPv6)
  9. 你的第一个java_【JAVA SE基础篇】3.你的第一个JAVA程序
  10. 对象流的序列化和反序列化
  11. 数据结构严蔚敏(c语言版)课后算法题答案-栈和队列
  12. 11个炫酷的Linux终端命令大全
  13. 动态炫酷的404页面源码
  14. word文档设置不同的页眉页脚
  15. 大作手操作体系:突破后回调不下箱体可加仓,但是也有失误的时候!
  16. 日常css小tips
  17. ARM架构(RISC)和x86架构(CISC)以及传统与移动CPU/GPU厂商
  18. excel表格内文字怎么换行_Excel | 单元格内换行与撤销换行的方法
  19. 程序员工作三年晒出工资条,直言加班太累了,网友评论炸锅
  20. 步进电机(四相五线为例子)步进角度和工作原理介绍

热门文章

  1. 使用编译好的OPENNI2的动态库与静态库进行Kinect2.0的ONI格式视频流录制
  2. IOS上AudioSession设置, 切换扬声器和听筒详解
  3. 从键盘任意输入一个年份,和一个月份,输出该年这个月份有多少天,用程序实现 比如: 输入年份: 2021 输入月份: 12 输出:2021年12月份共
  4. Unity SteamVR 关闭 瞬移时 手柄按下 圆圈边上的长方形
  5. 图的遍历之深度优先(头歌教学实践平台)
  6. ​星巴克不是咖啡企业,而是数据科技公司?
  7. 找到适合自己的前端发展方向
  8. cisco 交换机指示灯
  9. Linus 又开怼:有时候标准就是一坨屎!
  10. Gatling:HTTP Request