im钱包官方网站
数字资产服务平台

im钱包官方网站是全球著名的数字资产交易平台之一,主要面向全球用户提供比特币、莱特币、以太币等数字资产的币币和衍生品交易服务。

下载比特派钱包|恺撒移位密码

时间:2024-03-08 01:30:37

古典密码学(一)之移位密码(恺撒密码) - 知乎

古典密码学(一)之移位密码(恺撒密码) - 知乎首发于你好,密码学!切换模式写文章登录/注册古典密码学(一)之移位密码(恺撒密码)老徐ruby on rails,区块链,密码学前言 密码学的基本目的是使得两个在不安全的信道上进行安全的通信,在计算机网络中,现假设有两个人Alice和Bob,Alice想发送消息给Bob,告诉他明天凌晨2点毒贩将在4号码头进行交易,请Bob配合缉毒。这里Alice有一个麻烦就是他怕在信息传输中可能会被敌人Oscar监听,甚至篡改消息内容,导致整个计划失败,Bob也对Alice发过来的消息有疑虑,不知道消息是否为Alice本人所发,消息内容是否真实等等。 这里密码学的重要性就体现出来了,假设Alice事先和Bob商量好一个密钥(key),Alice通过密钥将明文(plaintext)加密成密文,在网络中传输,Bob收到Alice传过来的密文(ciphertext),用事先商量好的密钥进行解密,得到明文,而敌人即使监听到Alice发送的消息,也是加密过的密文,由于不知道密钥,所以无法知道真实的明文,整个过程如下。密码技术在网络传输的应用移位密码(Shift Cipher)、恺撒密码(Caesar Cipher) 移位密码是古典密码学中最早,最简单的一种加、解密码方法,最早可追溯至古罗马时代,尤利乌斯:恺撒曾经使用过此密码。 移位密码是通过将明文中所使用的字母按照一定的字数进行“平移”来加密,为了简化内容,在这里我们只使用英文字母作为示例,我们用小写字母(a,b,c,d…)来表示明文,用大写字母(A,B,C,D…)来表示密文。 最早期时,一般将字母平移3位,也就是a->D,b->E,c->F,这种最早时平移3位是叫恺撒密码(Caesar Cipher),后来经过推广,平移位数也不一定是3位,可以是其它任何整数位,这种又叫移位密码(Shift Cipher),可以知道,恺撒密码是移位密码的一个特例(key=3时),下面是恺撒密码平移的工作方式凯撒密码平移示例移位密码的加密 使用移位密码可以用来加密普通的英文句子,但是我们要建立英文字母和模26剩余之间一一对应关系,如A->0,B->1,…Z->25。其列表如下:字母与数字对应图 现假设我们有明文P=china,密钥K=3, 现要将其加密,根据上表,将字符P中的每个字母平移3位,得到如下情况:c->F

h->K

i->L

n->Q

a->D至此,明文china就被转换成了密文FKLQD,具体用程序算法可归纳如下:a,首先将明文中的字母按照上表对应成相应的数字:

2 7 8 13 0

b,再将上面的数字与密钥K=3相加:

5 10 11 16 3

c,再对各个数字取模26运算,可得:

5 10 11 16 3

d,最后将各数字转化为字母即可得密文

F K L Q D具体代码可参考这里https://github.com/xuyao91/cryptography/blob/master/caesar/caesar.rb#L10移位密码的解密 移位密码的解密也非常简单,只要使用加密时用的密钥进行反向平移操作,刚来的例子只要将密文反向平移3位就行,可得到如下:F->c

K->h

L->i

Q->n

D->a具体程序的算法其实就是加密的反向操作,如下:a, 将密文转化成对应的字母

5 10 11 16 3

b, 将各数字减去密钥K=3,得到如下数字

2 7 8 13 0

c, 再对各个数字取模26运算,得:

2 7 8 13 0

d, 最后将数字转化成字母得

c h I n a具体代码可参考这里:https://github.com/xuyao91/cryptography/blob/master/caesar/caesar.rb#L18移位密码的暴力破解 通过上面的例子可以知道,我们只要拿到的密钥K,就可以密文解密,那么有没有不用密钥就可以解密的呢,在移位密码中,密钥就是字母平移的位数,因为因为字母表里只有26个字母(0-25),所以加密的密钥一共就是0-25之间的26个数字,我们可以把26个数字全部当作密钥试一次,解密出来其中有一个明文肯定是对的,像这种将所有可能的密钥全部尝试一遍的,我们叫暴力破解(brute-force attack),这种方法本质是在所有的密钥中找出正确的那一个,因此又称为穷举搜索(exhaustive search)可以将上面的例子通过暴力破解试一下,密钥从0开始,一直试到25,得到如下效果:FKLQD -> 第0次破解 -> fklqd

FKLQD -> 第1次破解 -> ejkpc

FKLQD -> 第2次破解 -> dijob

FKLQD -> 第3次破解 -> china

FKLQD -> 第4次破解 -> bghmz

FKLQD -> 第5次破解 -> afgly

FKLQD -> 第6次破解 -> zefkx

FKLQD -> 第7次破解 -> ydejw

FKLQD -> 第8次破解 -> xcdiv

FKLQD -> 第9次破解 -> wbchu

FKLQD -> 第10次破解 -> vabgt

FKLQD -> 第11次破解 -> uzafs

FKLQD -> 第12次破解 -> tyzer

FKLQD -> 第13次破解 -> sxydq

FKLQD -> 第14次破解 -> rwxcp

FKLQD -> 第15次破解 -> qvwbo

FKLQD -> 第16次破解 -> puvan

FKLQD -> 第17次破解 -> otuzm

FKLQD -> 第18次破解 -> nstyl

FKLQD -> 第19次破解 -> mrsxk

FKLQD -> 第20次破解 -> lqrwj

FKLQD -> 第21次破解 -> kpqvi

FKLQD -> 第22次破解 -> jopuh

FKLQD -> 第23次破解 -> inotg

FKLQD -> 第24次破解 -> hmnsf

FKLQD -> 第25次破解 -> glmre可以知道,其实在试到第3次的时候,明文就被试出来了代码可以参考这里https://github.com/xuyao91/cryptography/blob/master/caesar/caesar.rb#L26脚本示例 我们用脚本试一下上面所说的各种方法,脚本代码在这里https://github.com/xuyao91/cryptography/blob/master/caesar/caesar.rb#明文是 I am peter, I love china, 密钥是6

message = "iampeterxuilovechina"

caesar = Caesar.new 6

#调用encoder方法加密出密文

cipher = caesar.encoder(message) => OGSVKZKXDAORUBKINOTG

#调用decoder方法解密出明文

caesar.decoder(cipher) => iampeterxuilovechina

#暴力破解

OGSVKZKXDAORUBKINOTG -> 第0次破解 -> ogsvkzkxdaorubkinotg

OGSVKZKXDAORUBKINOTG -> 第1次破解 -> nfrujyjwcznqtajhmnsf

OGSVKZKXDAORUBKINOTG -> 第2次破解 -> meqtixivbympsziglmre

OGSVKZKXDAORUBKINOTG -> 第3次破解 -> ldpshwhuaxloryhfklqd

OGSVKZKXDAORUBKINOTG -> 第4次破解 -> kcorgvgtzwknqxgejkpc

OGSVKZKXDAORUBKINOTG -> 第5次破解 -> jbnqfufsyvjmpwfdijob

OGSVKZKXDAORUBKINOTG -> 第6次破解 -> iampeterxuilovechina

OGSVKZKXDAORUBKINOTG -> 第7次破解 -> hzlodsdqwthknudbghmz

OGSVKZKXDAORUBKINOTG -> 第8次破解 -> gykncrcpvsgjmtcafgly

OGSVKZKXDAORUBKINOTG -> 第9次破解 -> fxjmbqbourfilsbzefkx

OGSVKZKXDAORUBKINOTG -> 第10次破解 -> ewilapantqehkraydejw

OGSVKZKXDAORUBKINOTG -> 第11次破解 -> dvhkzozmspdgjqzxcdiv

OGSVKZKXDAORUBKINOTG -> 第12次破解 -> cugjynylrocfipywbchu

OGSVKZKXDAORUBKINOTG -> 第13次破解 -> btfixmxkqnbehoxvabgt

OGSVKZKXDAORUBKINOTG -> 第14次破解 -> asehwlwjpmadgnwuzafs

OGSVKZKXDAORUBKINOTG -> 第15次破解 -> zrdgvkviolzcfmvtyzer

OGSVKZKXDAORUBKINOTG -> 第16次破解 -> yqcfujuhnkybelusxydq

OGSVKZKXDAORUBKINOTG -> 第17次破解 -> xpbetitgmjxadktrwxcp

OGSVKZKXDAORUBKINOTG -> 第18次破解 -> woadshsfliwzcjsqvwbo

OGSVKZKXDAORUBKINOTG -> 第19次破解 -> vnzcrgrekhvybirpuvan

OGSVKZKXDAORUBKINOTG -> 第20次破解 -> umybqfqdjguxahqotuzm

OGSVKZKXDAORUBKINOTG -> 第21次破解 -> tlxapepciftwzgpnstyl

OGSVKZKXDAORUBKINOTG -> 第22次破解 -> skwzodobhesvyfomrsxk

OGSVKZKXDAORUBKINOTG -> 第23次破解 -> rjvyncnagdruxenlqrwj

OGSVKZKXDAORUBKINOTG -> 第24次破解 -> qiuxmbmzfcqtwdmkpqvi

OGSVKZKXDAORUBKINOTG -> 第25次破解 -> phtwlalyebpsvcljopuh 可以知道,移位密码其实是很弱的,我们可以很容易将他破解出来,但是在古代那会还是挺有用的。 参考资料【密码学原理与实践(第三版)】【图解密码技术】编辑于 2018-07-13 14:50密码加密密码学区块链(Blockchain)​赞同 105​​9 条评论​分享​喜欢​收藏​申请转载​文章被以下专栏收录你好,密码学!密码学入门的一切,都在

凯撒密码 加密/解密 - 在线工具

凯撒密码 加密/解密 - 在线工具

首页

JSON

JSON 格式化

JSON 转义

JSON 生成实体类

格式化

Html/JavaScript 格式化

JSON 格式化

Sql 格式化

Xml 格式化

Url

Url 参数格式化

Url 参数与Json互转

Url  编码/解码

编码与解码

字符  编码/解码

字节数组  编码/解码

Url  编码/解码

Base64  编码/解码

Unicode与中文  编码/解码

Punycode  编码/解码

编码查询

编码列表

ASCII 编码表

GB2312 编码表

GBK 编码表

GB18030 编码

Big5 编码表

Unicode 编码

UTF-16 编码表

Emoji 表情符号

特殊符号大全

数字工具

进制转换(正整数)

进制转换(负整数)

IEEE 754 浮点数

计算器

IPv4 转 IPv6

字节换算

大小端转换

二进制逆序

数组逆序

数字排序

二进制与十六进制互转

字节数组与十六进制互转

字节数组有无符号数互转

Base64与十六进制互转

文本工具

文本对比

文本处理

文本 去重/排序

文本分割

文本合并

文本转义

文本倒序

文本美化

标点符号转换

文本行长度过滤

文本行定长

键值对转代码

字数统计

正则表达式

英文字母大小写转换

汉字简繁转换

日期工具

Unix 时间戳

Cron 表达式生成

世界时间表

日期计算器

年龄计算器

万年历

公历农历转换

公历闰年查询

农历闰月查询

Html 工具

查看网页源代码

Html 过滤

Html/JavaScript 格式化

文本转 Html 表格

Html 在线预览

Html 转义字符

图片工具

RGB与十六进制颜色码转换

图片颜色提取

图片转 Base64

Base64 转图片

图片转 ico 图标

二维码工具

二维码识别

二维码生成

Http 工具

我的 IP

Http 我的浏览器

Http 模拟请求

端口开放检测

SSL 证书检测

域名 Whois 查询

域名 DNS 查询

Http 状态查询

Http 请求方式

Http MimeType

SSL 证书

SSL 证书检测

SSL 证书解析

Pfx To PEM

SSL 证书生成

摘要算法

MD5

SHA

HMAC-MD5

HMAC-SHA

SM3

CRC 校验

对称加密/解密

SM4

DES

Triple DES

AES

RC2

RC4

RC5

RC6

Blowfish

Rabbit

异或

摩斯密码

凯撒密码

非对称加密/解密

RSA

SM2

随机数工具

随机密码生成器

GUID 生成器

设备辅助测试

键盘按键测试

键盘 KeyCode 值

鼠标按键测试

麦克风测试

摄像头测试

屏幕测试

其他工具

微信收藏助手

广告Show

云服务器优惠购买

问题反馈

捐赠支持

关于我们

偏移量:

其他字符:

加密 ↓

解密 ↑

说明

凯撒密码:Caesar Cipher,是一种简单的替换密码,也被称为移位密码。它是古罗马军事指挥官凯撒(Julius Caesar)所使用的一种加密技术。

凯撒密码的加密过程很简单,它将明文中的每个字母按照一个固定的偏移量(位移量)进行替换。例如,当偏移量为 3 时,明文中的字母 A 会被替换为 D,B 会被替换为 E,以此类推。

如果超过了字母表的末尾,就会回到字母表的开头继续替换。

解密过程与加密过程相反,将密文中的每个字母按照相同的偏移量进行替换,即向左移动相应的位数。

凯撒密码的特点是简单易懂,但安全性很低。由于只有 26 种可能的偏移量,可以通过穷举法轻松破解。因此,凯撒密码通常只用于教学和娱乐目的,而不用于真正的加密通信。

© 2021 - 2024 ToolHelper All rights reserved.  

问题反馈     

皖ICP备2021019041号

恺撒密码_百度百科

_百度百科 网页新闻贴吧知道网盘图片视频地图文库资讯采购百科百度首页登录注册进入词条全站搜索帮助首页秒懂百科特色百科知识专题加入百科百科团队权威合作下载百科APP个人中心恺撒密码播报讨论上传视频加密技术收藏查看我的收藏0有用+10本词条由《中国科技信息》杂志社 参与编辑并审核,经科普中国·科学百科认证 。在密码学中,恺撒密码(英语:Caesar cipher),或称恺撒加密、恺撒变换、变换加密,是一种最简单且最广为人知的加密技术。它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推。这个加密方法是以罗马共和时期恺撒的名字命名的,当年恺撒曾用此方法与其将军们进行联系。中文名恺撒密码外文名Caesar's code别    名恺撒加密性    质加密技术类    别密码学载    体字母目录1历史2概念3特定恺撒密码4密码破解5例子历史播报编辑根据苏维托尼乌斯于公元二世纪写的《恺撒传》中的记载 [4],恺撒曾用此方法对重要的军事信息进行加密: [1]如果需要保密,信中便用暗号,也即是改变字母顺序,使局外人无法组成一个单词。如果想要读懂和理解它们的意思,得用第4个字母置换第一个字母,即以D代A,余此类推。同样,奥古斯都也使用过类似方式,只不过他是把字母向右移动一位,而且末尾不折回。每当他用密语写作时,他都用B代表A,C代表B,其余的字母也依同样的规则;他用A代表Z。简而言之,就是将真正的信件内容(明文)中的每一个字母用其后的第N个字母代替,转换成一封密信(密文)。这样,即便敌军截住信件,也不知其意。据说,这种加密方法在当时的古罗马颇为流行。这种将字母表中的字母移动一定位置而实现加密的方法,被称为“恺撒移位密码”,简称“恺撒密码”。移动的位数N就是加密和解密的密钥。 [4]另外,有证据表明,恺撒曾经使用过更为复杂的密码系统:文法学家普罗布斯曾经写过一份独具创新的手稿,研究恺撒书信中包含有秘密信息的字母。已经无法弄清恺撒密码在当时有多大的效果,但是有理由相信它是安全的。因为恺撒大部分敌人都是目不识丁的,而其余的则可能将这些消息当作是某个未知的外语。即使有某个敌人获取了恺撒的加密信息,根据现有的记载,当时也没有任何技术能够解决这一最基本、最简单的替换密码。现存最早的破解方法记载在公元9世纪阿拉伯的阿尔·肯迪的有关发现频率分析的著作中。 [2]概念播报编辑在密码学中,恺撒密码(英语:Caesar cipher),或称恺撒加密、恺撒变换、变换加密,是一种最简单且最广为人知的加密技术。它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推。这个加密方法是以罗马共和时期恺撒的名字命名的,当年恺撒曾用此方法与其将军们进行联系。恺撒密码通常被作为其他更复杂的加密方法中的一个步骤,例如维吉尼亚密码。恺撒密码还在现代的ROT13系统中被应用。但是和所有的利用字母表进行替换的加密技术一样,恺撒密码非常容易被破解,而且在实际应用中也无法保证通信安全。特定恺撒密码播报编辑根据偏移量的不同,还存在若干特定的恺撒密码名称:偏移量为10:Avocat(A→K)偏移量为13:ROT13偏移量为-5:Cassis (K 6)偏移量为-6:Cassette (K 7)密码破解播报编辑即使使用唯密文攻击,恺撒密码也是一种非常容易破解的加密方式。可能有两种情况需要考虑:(1)攻击者知道(或者猜测)密码中使用了某个简单的替换加密方式,但是不确定是恺撒密码;(2)攻击者知道(或者猜测)使用了恺撒密码,但是不知道其偏移量。对于第一种情况,攻击者可以通过使用诸如频率分析或者样式单词分析的方法, [3]马上就能从分析结果中看出规律,得出加密者使用的是恺撒密码。对于第二种情况,解决方法更加简单。由于使用恺撒密码进行加密的语言一般都是字母文字系统,因此密码中可能是使用的偏移量也是有限的,例如使用26个字母的英语,它的偏移量最多就是25(偏移量26等同于偏移量0,即明文;偏移量超过26,等同于偏移量1-25)。因此可以通过穷举法,很轻易地进行破解。其中一种方法是在表格中写下密文中的某个小片段使用所有可能的偏移量解密后的内容——称为候选明文,然后分析表格中的候选明文是否具有实际含义,得出正确的偏移量,解密整个密文。例如,被选择出的密文片段是"EXXEGOEXSRGI",从右表中的候选明文,可以很快看出其正确的偏移量是4。也可以通过在每一个密文单词的每一个字母下面,纵向写下整个字母表其他字母,然后可以通过分析,得出其中的某一行便是明文。另外一种攻击方法是通过频率分析。当密文长度足够大的情况下,可以先分析密文中每个字母出现的频率,然后将这一频率与正常情况下的该语言字母表中所有字母的出现频率做比较。例如在英语中,正常明文中字母E和T出现的频率特别高,而字母Q和Z出现的频率特别低,而在法语中出现频率最高的字母是E,最低的是K和W。可以通过这一特点,分析密文字母出现的频率,可以估计出正确的偏移量。此外,有时还可以将频率分析从字母推广到单词,例如英语中,出现频率最高的单词是:the, of, and, a, to, in...。可以通过将最常见的单词的所有可能的25组密文,编组成字典,进行分析。比如QEB可能是the,MPQY可能是单词know(当然也可能是aden)。但是频率分析也有其局限性,它对于较短或故意省略元音字母或者其他缩写方式写成的明文加密出来的密文进行解密并不适用。另外,通过多次使用恺撒密码来加密并不能获得更大的安全性,因为使用偏移量A加密得到的结果再用偏移量B加密,等同于使用A+B的偏移量进行加密的结果。例子播报编辑恺撒密码的替换方法是通过排列明文和密文字母表,密文字母表示通过将明文字母表向左或向右移动一个固定数目的位置。例如,当偏移量是左移3的时候(解密时的密钥就是3):明文字母表:ABCDEFGHIJKLMNOPQRSTUVWXYZ ;密文字母表:DEFGHIJKLMNOPQRSTUVWXYZABC。使用时,加密者查找明文字母表中需要加密的消息中的每一个字母所在位置,并且写下密文字母表中对应的字母。需要解密的人则根据事先已知的密钥反过来操作,得到原来的明文。例如:明文:THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG ;密文:WKH TXLFN EURZQ IRA MXPSV RYHU WKH ODCB GRJ。恺撒密码的加密、解密方法还能够通过同余的数学方法进行计算。首先将字母用数字代替,A=0,B=1,...,Z=25。此时偏移量为n的加密方法即为:解密就是:新手上路成长任务编辑入门编辑规则本人编辑我有疑问内容质疑在线客服官方贴吧意见反馈投诉建议举报不良信息未通过词条申诉投诉侵权信息封禁查询与解封©2024 Baidu 使用百度前必读 | 百科协议 | 隐私政策 | 百度百科合作平台 | 京ICP证030173号 京公网安备110000020000

凯撒密码(移位加密)_移位加密是一种无密钥的加密方式。-CSDN博客

>

凯撒密码(移位加密)_移位加密是一种无密钥的加密方式。-CSDN博客

凯撒密码(移位加密)

最新推荐文章于 2023-12-10 21:20:45 发布

KB-野原新之助

最新推荐文章于 2023-12-10 21:20:45 发布

阅读量1.8w

收藏

116

点赞数

25

分类专栏:

Cryptography

文章标签:

凯撒密码(移位加密)

C语言程序练习

古典加密

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/qq_43968080/article/details/85067324

版权

Cryptography

专栏收录该内容

10 篇文章

4 订阅

订阅专栏

简介:

移位加密是一种古典的替换加密技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。 例如:当偏移量是3的时候,所有的字母A将被替换成D,B替换成E,此时的加密方式称为凯撒密码。

此程序进行动态录入移位数,称之为密钥;并且仅支持输入大小写字母。

思路:

利用取余的方式实现移位

代码:

–加密过程–

#include

#include

/* 加密 */

int main()

{

int key = 0;

char word_1[50] = "\0"; //加密前

char word_2[50] = "\0"; //加密后

int i = 0;

printf("输入明文:");

scanf("%s", word_1);

printf("输入密钥:");

scanf("%d", &key);

for(i = 0; word_1[i] != '\0'; i++)

{

if(word_1[i] >= 'A' && word_1[i] <= 'Z')

word_2[i] = (word_1[i] - 'A' + key) % 26 + 'A'; //进行移位加密

else if(word_1[i] >= 'a' && word_1[i] <= 'z')

word_2[i] = (word_1[i] - 'a' + key) % 26 + 'a';

}

printf("加密后密文是:%s", word_2);

return 0;

}

明文输入HelloWorld,密钥输入3,加密后的结果:

–解密过程–

移位加密的解密过程有两种: 1、当知道密文和密钥时,利用和加密同样的方法,进行反向移位替换,即可得出明文; 2、当只知道密文,不知道密钥时,因为移位加密是根据26字母表来进行移位加密的,当移位为0和26时,结果一致,所以总共有25种情况。可以通过穷举的方法测试每一种情况,来猜出明文。

第一种:

知道密钥

#include

#include

/* 解密 */

int main()

{

int key = 0;

char word_1[50] = "\0"; //解密前

char word_2[50] = "\0"; //解密后

int i = 0;

printf("输入密文:");

scanf("%s", word_1);

printf("输入密钥:");

scanf("%d", &key);

for(i = 0; word_1[i] != '\0'; i++)

{

if(word_1[i] >= 'A' && word_1[i] <= 'Z')

word_2[i] = (word_1[i] - 'A' - key) % 26 + 'A'; //进行移位解密

else if(word_1[i] >= 'a' && word_1[i] <= 'z')

word_2[i] = (word_1[i] - 'a' - key) % 26 + 'a';

}

printf("解密后明文是:%s", word_2);

return 0;

}

结果:

第二种:

不知道密钥,穷举法

#include

#include

/* 穷举法解密 */

int main()

{

char word_1[50] = "\0"; //解密前

char word_2[50] = "\0"; //解密后

int i = 0;

int j = 0;

printf("输入密文:");

scanf("%s", word_1);

for(i = 0; i < 26; i++)

{

for(j = 0; word_1[j] != '\0'; j++)

{

if(word_1[j] >= 'A' && word_1[j] <= 'Z')

word_2[j] = (word_1[j] - 'A' + i) % 26 + 'A'; //将密钥key换成i进行尝试

else if(word_1[j] >= 'a' && word_1[j] <= 'z')

word_2[j] = (word_1[j] - 'a' + i) % 26 + 'a';

}

printf("第%d次尝试:%s\n", i + 1, word_2);

}

return 0;

}

结果:

经过穷举,也测出了明文。

**-

代码练习,仅为一种思路,若有问题请指出。

**

优惠劵

KB-野原新之助

关注

关注

25

点赞

116

收藏

觉得还不错?

一键收藏

知道了

6

评论

凯撒密码(移位加密)

简介:移位加密是一种古典的替换加密技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如:当偏移量是3的时候,所有的字母A将被替换成D,B替换成E,此时的加密方式称为凯撒密码。此程序进行动态录入移位数,称之为密钥;并且仅支持输入大小写字母。思路:利用取余的方式实现移位代码:–加密过程–#include &amp;lt;stdio.h&amp;gt;#...

复制链接

扫一扫

专栏目录

凯撒密码加密解密

06-10

凯撒密码加密解密

密码学考点整理

sjxgghg的博客

04-03

5836

考试重点

1. 密码体制分类

对称密码体制和非对称密码体制;

2. DES和AES算法的特点

(结构、密钥长度,分组长度,DES弱密钥)及其过程(置换过程,S盒查表过程),AES的轮结构

DES

DES结构

首先是一个初始置换IP,用于重排明文分组的64比特;

相同功能的16轮变换,每轮都有置换和代换;

第16轮的输出分为左右两半并被交换次序;

最后经过一个逆初始置换产生64比特密文;

DES结构图如下:

密钥长度:56

分组长度:64

DES弱密钥:待续

了解即可

DES 分组长度

6 条评论

您还未登录,请先

登录

后发表或查看评论

凯撒密码原理(加解密)

最新发布

weixin_74790320的博客

12-10

553

最早由古罗马军事统帅盖乌斯·尤利乌斯·凯撒在军队中用来传递加密信息,故称凯撒密码。此为一种位移加密手段,只对26个(大小写)字母进行位移加密,规则相当简单,容易被破解。凯撒密码属于替代加密,即用另一个字符来替换明文中的原字符,其中的对应关系只有加密者所知。而凯撒密码就是最简单的一种替代加密手段。

《程序设计基础》 第七章 数组 7-39 凯撒加密(后偏移) (15 分)

OchiaMalu的博客

11-14

3826

为了防止信息被别人轻易窃取,需要把电码明文通过加密方式变换成为密文。输入一个以回车符为结束标志的字符串(少于80个字符),再输入一个正整数offset,用凯撒密码将其加密后输出。恺撒密码是一种简单的替换加密技术,将明文中的所有字母都在字母表上向后偏移offset位后被替换成密文。 例如,当偏移量offset是2时,表示所有的字母被向后移动 2 位后的字母替换,即所有的字母 A 将被替换成C,字母 B 将变为 D,…,字母 X 变成 Z,字母 Y 则变为 A,字母 Z 变为 B。

输入格式:

输入第一行给

古典密码算法 凯撒(Caesar)密码,又叫循环移位密码

mmdev

11-21

2004

实验一古典密码算法

一、实验目的

学习常见的古典密码学算法,通过编程实现替代密码算法和置换密码算法,加深对古典密码体制的了解,为深入学习密码学奠定基础。

二、实验要求

分析替代密码算法和置换密码算法的功能需求,详细设计实现替代密码算法和置换密码算法的数据结构和流程,给出测试用例和测试步骤,得出测试和结论。替代密码算法和置换密码算法的实现程序必须提供加密和解密两个接口:intencrypt(...

凯撒密码(凯撒移位)

慎铭的博客

01-18

8142

  在密码学中,恺撒密码(英语:Caesar cipher),或称恺撒加密、恺撒变换、变换加密,是一种最简单且最广为人知的加密技术。它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推。

  恺撒密码通常被作为其他更复杂的加密方法中的一个步骤,例如维吉尼亚密码。恺撒密码还在现代的ROT13系统中被应用。但是和所有的利用字母表进行替换的加密技术一样,恺撒密码非常容易被破解,而且在实际应用

移位加密

星云

03-11

2120

位移加密

最简单的加密方式之一,通过每一个字母映射至这个字母之后与之相隔一定数量个字母的字母来实现加密。

代码

python3

输入待加密字符串敲回车即可看到加密和解密结果。待加密字符串不区分大小写。

#!/usr/bin/env python

# -*- coding: utf-8 -*-

START = ord('a')

CHAR_COUNT = 26

OFFSET = 11

MAP = {chr(v+START): chr(((v+OFFSET) % CHAR_COUNT)+STA

移位加密c++

qq_51700712的博客

07-25

2189

一.

移位加密又称凯撒密码,是替换密码的一个特例,密钥为移位长度k,明文和密文中的字母都是整数环Z26中的元素。

加密:y=x+kmod 26

解密:x=y-kmod 26

二.源代码

1.加密:

...

初学加密算法之移位密码

qq_40605022的博客

03-31

1万+

        移位密码的加密方法很简单,就是将明文按照某种方式进行移位,著名的凯撒密码就是移位密码的一种。比如‘’i am nine‘’后移3位后的密文就是 ''l dp qlqh''按照这种思想我设计了一段程序来实现移位加密:#include<stdio.h>

#include<string.h>

#define length  10

void encrypt(char...

移位密码(凯撒密码)

破晓而生,踏浪前行。

04-01

4026

移位密码简介,分析和实现。

7-3 jmu-python-凯撒密码加密算法 (10分):编写一个凯撒密码加密程序,接收用户输入的文本和密钥k,对明文中的字母a-z和字母A-Z替换为其后第k个字母。

李江辰

10-11

1万+

前言

PTA程序设计类教学平台—Python作业二(循环结构程序设计)

小白进阶之路的学习与记录之------凯撒密码

题目:

编写一个凯撒密码加密程序,接收用户输入的文本和密钥k,对明文中的字母a-z和字母A-Z替换为其后第k个字母。

输入格式:

接收两行输入,第一行为待加密的明文,第二行为密钥k。

输出格式:

输出加密后的密文。

输入样例:

在这里给出一组输入。例如:

Hello World!

3

输出样例:

Khoor Zruog!

凯撒密码是什么?

原理:

通过把字母移动一定的位数来实现加解

C语言凯撒移位加密算法

03-14

//移位算法 #include #include #define SIZE 50 int main() { //i 用于计数输入个数,j 为临时变量, plain 存放明文, cipher 存放密文,decryption存放解密后文本,fpp 为明文文件指针,fpc 为密文文件指针 int ...

凯撒密码:凯撒密码加密和解密

02-20

凯撒密码加密和解密 方法: 加密 解密 移位字母

凯撒密码转换器

08-31

支持对字母的转换加密,解密,有需要的可以下载使用!

凯撒密码加密

03-22

运用移位密码体制,用C语言实现对文件的加密和解密程序。

hill密码(希尔密码)

热门推荐

野原新之助

12-21

2万+

简述

希尔密码是利用矩阵进行加密的一种加密算法,其本质是一种多表代换密码。

百科:

希尔密码是运用基本矩阵论原理的替换密码,由Lester S. Hill在1929年发明。

每个字母当作26进制数字:A=0, B=1, C=2… 一串字母当成n维向量,跟一个n×n的矩阵相乘,再将得出的结果模26。

注意用作加密的矩阵(即密匙)在 必须是可逆的,否则就不可能解码。只有矩阵的行列式和26互质,才是可...

古典密码之“维吉尼亚密码”

野原新之助

11-05

6725

简述

维吉尼亚密码是在代换密码(即单表代换)基础上,衍生出来的多表代换密码。

与单表代换相同,维吉尼亚密码也采用明文字母与密钥字母(即打乱顺序后的26字母表)间建立一一对应关系。

但是与之不同的是,单表代换密码中一旦密钥字母确定,相同的明文就只能产生唯一的密文,而维吉尼亚密码则是在单表的基础上,加入了密钥字,使用密钥字对明文进行分组加密,因此即使密钥确定了,密钥字不同,也会产生不同的密文。

加解密...

基于背包问题的公钥加密算法

野原新之助

11-08

3703

简述:

公钥加密

背包问题

ss

加解密:

加密

解密

代码实现:

import random

from my_modules import modules

# 初始化

def init(length, interval):

listV = [] # 超递增向量

listV_b = [] # 每个元素对应的乘数

bagCapacity = ...

python凯撒密码加密

03-29

凯撒密码加密是一种简单的密码加密方法,它基于字母表的移位,将原来的字母替换成偏移后的字母。

以下是一个Python示例代码,可以实现凯撒密码加密:

```python

def caesar_cipher_encrypt(plaintext, key):

ciphertext = ''

for char in plaintext:

if char.isalpha():

# 将字母移位

shifted_char = chr((ord(char) - ord('a') + key) % 26 + ord('a'))

ciphertext += shifted_char

else:

ciphertext += char

return ciphertext

```

代码中的`plaintext`是要加密的明文,`key`是移位的偏移量。首先遍历明文中的每个字符,如果是字母,则进行移位加密,否则直接添加到密文中。移位加密的方法是:将字符转换为ASCII码,减去字母a的ASCII码,加上偏移量,再对26取模,最后加上字母a的ASCII码,转换回字符。

以下是一个示例,将明文`hello world`使用偏移量为3的凯撒密码加密:

```python

plaintext = 'hello world'

key = 3

ciphertext = caesar_cipher_encrypt(plaintext, key)

print(ciphertext) # 输出:khoor zruog

```

密文为`khoor zruog`。

“相关推荐”对你有帮助么?

非常没帮助

没帮助

一般

有帮助

非常有帮助

提交

KB-野原新之助

CSDN认证博客专家

CSDN认证企业博客

码龄5年

暂无认证

120

原创

3万+

周排名

81万+

总排名

37万+

访问

等级

4766

积分

279

粉丝

514

获赞

125

评论

1792

收藏

私信

关注

热门文章

hill密码(希尔密码)

23520

Python:回文数的三种实现方法

21368

凯撒密码(移位加密)

18960

HTML:a、button、input三种标签下的图片按钮

16100

搭建sqli-labs及遇到的问题

14855

分类专栏

工具篇

C

8篇

靶场

DVWA

7篇

VulnHub综合靶机

9篇

算法

3篇

运维

综合

2篇

提权

2篇

CTF

XCTF

1篇

PHP

6篇

HTTP

1篇

Linux

5篇

Tools

10篇

Python

12篇

渗透测试

1篇

Web通识

10篇

Web攻防

18篇

Database

6篇

BurpSuite

8篇

Cryptography

10篇

攻防课实验记录

6篇

Security Protocol

HTML & CSS & JS

4篇

Metasploit Framework

3篇

最新评论

Python:回文数的三种实现方法

月薪漫漫:

不好意思,脑子没转过来

Python:回文数的三种实现方法

m0_74904548:

这不是if语句吗?

封装fgets函数,去掉其末尾的换行符"\n"

2301_79598657:

返回值还能这样写吗?

冰河木马实验(V8.4)

久辞.:

是32位的操作系统呀,但还是系统错误5

冰河木马实验(V8.4)

’灵‘:

问一下,电脑被冰河木马病毒控制了怎么办

最新文章

【XCTF】 Web进阶区部分 WriteUp(一)

【漏洞复现】phpmyadmin后台任意文件包含(CVE-2018-12613)

记一次授权测试中POST型的CSRF漏洞发现

2020年56篇

2019年57篇

2018年8篇

目录

目录

分类专栏

工具篇

C

8篇

靶场

DVWA

7篇

VulnHub综合靶机

9篇

算法

3篇

运维

综合

2篇

提权

2篇

CTF

XCTF

1篇

PHP

6篇

HTTP

1篇

Linux

5篇

Tools

10篇

Python

12篇

渗透测试

1篇

Web通识

10篇

Web攻防

18篇

Database

6篇

BurpSuite

8篇

Cryptography

10篇

攻防课实验记录

6篇

Security Protocol

HTML & CSS & JS

4篇

Metasploit Framework

3篇

目录

评论 6

被折叠的  条评论

为什么被折叠?

到【灌水乐园】发言

查看更多评论

添加红包

祝福语

请填写红包祝福语或标题

红包数量

红包个数最小为10个

红包总金额

红包金额最低5元

余额支付

当前余额3.43元

前往充值 >

需支付:10.00元

取消

确定

下一步

知道了

成就一亿技术人!

领取后你会自动成为博主和红包主的粉丝

规则

hope_wisdom 发出的红包

实付元

使用余额支付

点击重新获取

扫码支付

钱包余额

0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

古典密码学算法之(一)凯撒移位(Caeserian Shift)_凯撒位移-CSDN博客

>

古典密码学算法之(一)凯撒移位(Caeserian Shift)_凯撒位移-CSDN博客

古典密码学算法之(一)凯撒移位(Caeserian Shift)

最新推荐文章于 2024-03-02 23:30:46 发布

江户川柯壮

最新推荐文章于 2024-03-02 23:30:46 发布

阅读量9.3k

收藏

8

点赞数

5

分类专栏:

传统密码与暗号

文章标签:

密码学

古典密码

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/edogawachia/article/details/102889230

版权

传统密码与暗号

专栏收录该内容

1 篇文章

0 订阅

订阅专栏

缘起

 从今天开始,新开一个系列,专门聊一聊经典的密码算法。

首先声明,这个系列谈论的密码不是现代的计算机使用的,基于数论、非对称体制的各种密码学,而是一些在实际历史中或者一些解谜小说中出现的传统的经典加密方法。有时候我们也将其中的一些所组成的称为古典密码学。

现如今,虽然传统加密方法在实际生活中用的不多,但是在很多推理小说中,密码和暗号等要素还是有很多有趣的案例的。比如福尔摩斯系列中的《跳舞的小人》、爱伦坡的《金甲虫》、江户川乱步的《二分铜币》等,在名侦探柯南中也有很多次出现破译密码和暗号的场景。密码和暗号是推理小说中的一个很重要的要素,具有一定的趣味性,还能推动情节的发展。这些推理中的密码和暗号通常都是和传统加密方法以及传统的密文分析方法(cryptanalysis)相关的。

由于对解谜类的推理小说的兴趣,系统整理这些常见经典加密方式也是很久以前就已经提上日程。无奈事务繁多,一直拖到现在。

立个flag,准备写的古典密码算法如下:

凯撒移位埃特巴什码维吉尼亚方阵莫斯码栅栏易位替换密码仿射密码培根密码 to be continued ...

今天第一篇,就从一个简单的凯撒移位说起:

凯撒移位(Caesarian shift)密码

凯撒移位,又称为Caesar cipher或者Caesarian cipher,或者直接称为shift cipher,即移位密码。改密码最早是由凯撒大帝发明的,用于军事行动中的秘密通信。凯撒密码非常简单,也很容易破解,其原理方法如下:

对于一段文本,比如: i love cryptography。其中每个字母都是26个英文字母中的一个。那么,我们要想对其加密,只需要将每个字母进行操作即可,也就是操作26个字母的字典。

凯撒移位就是将这26个字母的字典进行一个位移,得到密文字典,比如,将该字典向右移动3个位置,得到明文和密文字典的对应关系就是:

明文:ABCDEFGHIJKLMNOPQRSTUVWXYZ

密文:XYZABCDEFGHIJKLMNOPQRSTUVW

这样一来,对于上述的信息:

ILOVECRYPTOGRAPHY

就被加密成了

LORYHFUBSWRJUDSKB  

取不同的位移,就能得到不同的结果。

这时候我们可以发现,其实所有的字母其位移的大小都是一样的,那么这样一来,字母之间的关系是不变的,同一个字母仍然被映射为同一个字母。我们知道,英文中有很多固定的常见的词,比如the、in、of等。通过分析密文中的多个字母搭配结构中常常出现的一些pattern,就能破译凯撒密码。当然前提是密文足够长,具有统计意义。那么密文不够长怎么办呢?如果密文很短,将25中可能的位移遍历一遍不就好啦!看看那个位移下试验出来的明文是有意义的。

基于凯撒移位的这种“所有字母位移相同”的弊端,人们有发明了多表加密方法,这就是后面要讲的维吉尼亚方阵。

 

有时候一点点的信念,可以走很长的路 ——音乐家 尼克凯夫

优惠劵

江户川柯壮

关注

关注

5

点赞

8

收藏

觉得还不错?

一键收藏

知道了

1

评论

古典密码学算法之(一)凯撒移位(Caeserian Shift)

缘起从今天开始,新开一个系列,专门聊一聊经典的密码算法。首先声明,这个系列谈论的密码不是现代的计算机使用的,基于数论、非对称体制的各种密码学,而是一些在实际历史中或者一些解谜小说中出现的传统的经典加密方法。有时候我们也将其中的一些所组成的称为古典密码学。现如今,虽然传统加密方法在实际生活中用的不多,但是在很多推理小说中,密码和暗号等要素还是有很多有趣的案例的。比如福尔摩斯系列中的...

复制链接

扫一扫

专栏目录

C语言凯撒移位加密算法

03-14

c语言编写,欢迎扔板砖

//移位算法

#include

#include

#define SIZE 50

int main()

{

//i 用于计数输入个数,j 为临时变量, plain 存放明文, cipher 存放密文,decryption存放解密后文本,fpp 为明文文件指针,fpc 为密文文件指针

int i,j;

char plain[SIZE],cipher[SIZE],decryption[SIZE],ciphertext[SIZE];

FILE * fpp,* fpc,* fpd;

//加密

//建立新的明文TXT文件

printf("Caesar algorithm\n");

if((fpp=fopen("plain.txt","w+"))==NULL)

{

printf("creat new plain file error!\n");

exit(0);

}

//输入明文

printf("input plain alphabet:\n");

i=0;

scanf("%c",&plain[i]);

while(plain[i]!='\n'&&i

{

i++;

scanf("%c",&plain[i]);

}

printf("success input %d characters\n",i);

//将明文转存到文件中

for(j=0;j

{

if(fwrite(&plain[j],sizeof(char),1,fpp)!=1)

{

printf("saving plain file error!\n");

exit(0);

}

}

printf("success saving plain text!\n");

//加密

for(j=0;j

{

cipher[j]=plain[j]+3;

if(cipher[j]99)

{

printf("cipher %d = %c\n",j,cipher[j]);

}

else if(cipher[j]>122)

{

cipher[j]=cipher[j]%122+96;

printf("cipher %d = %c\n",j,cipher[j]);

}

else if(cipher[j]>90)

{

cipher[j]=cipher[j]%90+64;

printf("cipher %d = %c\n",j,cipher[j]);

}

else

{

printf("cipher %d = %c\n",j,cipher[j]);

}

}

//建立密文文件

if((fpc=fopen("cipher.txt","w+"))==NULL)

{

printf("create new cipher file error!");

exit(0);

}

for(j=0;j

{

if(fwrite(&cipher[j],sizeof(char),1,fpc)!=1)

{

printf("saving cipher file error!");

exit(0);

}

}

printf("success saving cipher file!");

printf("\n");

//解密

printf("input ciphertext alphabet:\n");

i=0;

scanf("%c",&ciphertext[i]);

while(ciphertext[i]!='\n'&&i

{

i++;

scanf("%c",&ciphertext[i]);

}

for(j=0;j

{

decryption[j]=ciphertext[j]-3;

if(decryption[j]90&&decryption[j]<97)

{

decryption[j]=123-(97-decryption[j]);

printf("character %d = %c\n",j,decryption[j]);

}

else

{

凯撒密码(移位加密)

热门推荐

野原新之助

12-18

1万+

简介:

移位加密是一种古典的替换加密技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。

例如:当偏移量是3的时候,所有的字母A将被替换成D,B替换成E,此时的加密方式称为凯撒密码。

此程序进行动态录入移位数,称之为密钥;并且仅支持输入大小写字母。

思路:

利用取余的方式实现移位

代码:

–加密过程–

#include &lt;stdio.h&gt;

#...

1 条评论

您还未登录,请先

登录

后发表或查看评论

古典密码之凯撒密码源代码

05-05

加密:把明文中每个字母替代为字母表中其后的第k个字母。解密:与加密相反,把密文中每个字母替代为字母表中其前的第k个字母。

古典密码算法MATLAB实现:凯撒密码

04-16

内容概要:凯撒密码的加解密函数,移动的位数自己定

适用人群:适用于刚开始学习密码的小伙伴们

使用场景及目标:适用于密码初学者,以及MATLAB初学者练手

% 加密的公式为:c = m + key(mod 26)

% 解密的公式为:m = c - key(mod 26)

密码学 凯撒密码算法实验C语言

09-26

一、实验目的

通过实验熟练掌握凯撒密码算法,学会凯撒密码算法程序设计,提高C++程序设计能力。

二、实验要求

(1)输入:任意的一段明文

(2)输出:根据加密算法,实现对明文的加密

(3)要求有对应的程序调试记录和验证记录

三、实验原理(流程图):

凯撒密码(凯撒移位)

慎铭的博客

01-18

8142

  在密码学中,恺撒密码(英语:Caesar cipher),或称恺撒加密、恺撒变换、变换加密,是一种最简单且最广为人知的加密技术。它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推。

  恺撒密码通常被作为其他更复杂的加密方法中的一个步骤,例如维吉尼亚密码。恺撒密码还在现代的ROT13系统中被应用。但是和所有的利用字母表进行替换的加密技术一样,恺撒密码非常容易被破解,而且在实际应用

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

~Up~

11-10

6416

凯撒加密、解密算法C++实验

【古典密码】 凯撒密码 移位变换 仿射变换 多表代换 Python

Herk 的博客

10-28

3664

本文附有丰富的代码,故文章冗长,请对照目录查阅,各大板块均有上下文提示

目录

古典密码简介

移位变换:

多表代换:

加密算法思路

仿射变换加密

多表代换加密

例题:仿射变换

例题:多表代换

古典密码简介

古典密码主要有置换和代换的方法。置换:字母重新排列,字母本身不变,但其位置改变了(凯撒密码、移位变换)。代换:将明文中的字符替代成其他字符(仿射变换、多表代换)。

在线性空间的变化中,古典加密就是移动并拉伸物体,让物体变得与原来不一样;解密解释将物...

移位密码(凯撒密码)

破晓而生,踏浪前行。

04-01

4026

移位密码简介,分析和实现。

W3Cschool凯撒(Caesar cipher)位移密码算法,通俗易懂,已知最佳,不服来战!

自查林的博客

04-10

3122

著名的凯撒密码Caesar cipher,又叫移位密码。

移位密码也就是密码中的字母会按照指定的数量来做移位。

一个常见的案例就是ROT13密码,字母会移位13个位置。由’A’ ↔ ‘N’, ‘B’ ↔’O’,以此类推。

写一个ROT13函数,实现输入加密字符串,输出解密字符串。

所有的字母都是大写,不要转化任何非字母形式的字符(例如:空格,标点符号),遇到这些特殊字符,就跳过它们。

下面贴出个人...

古典密码算法实验报告 使用java编写的古典密码算法(替代密码算法和置换密码算法)

04-14

使用java编写的古典密码算法(替代密码算法和置换密码算法)

四种古典密码算法实现

03-14

四种古典密码的c++算法实现,有playfair密码,vegenere密码,置换密码,移位密码。包含四种密码的加密和解密源代码以及可执行文件,代码注释清晰。

凯撒密码加解密算法_凯撒密码加解密算法_解密_

10-02

本程序用于对凯撒密码的加解密,其中更是包含了,不需要密钥的暴力破解法,效率挺不错。

python实现经典密码学中Vigenere与列移位算法工程文件

07-09

python实现经典密码学中Vigenere与列移位算法工程文件

详解博客地址:https://blog.csdn.net/m0_52316372/article/details/125690879

python实现经典密码学中列移位算法工程文件

07-09

python实现经典密码学中列移位算法工程文件 详解博客地址:https://blog.csdn.net/m0_52316372/article/details/125696893

信息安全密码学之Elgamal算法的加密解密过程

04-09

主要是对密码学中的Elgamal算法的详细分析,对加密解密所涉及的本原元、欧拉函数有说明解释,适合刚接触学习Elgamal算法的人进行快速理解掌握。

浅谈密码学

想你依然心痛的博客

02-24

7987

密码学作为一门研究信息安全的学科,扮演着保护我们数字化生活的重要角色。在当今信息时代,我们的个人和商业数据面临着越来越多的威胁,如黑客攻击、数据泄露等。而密码学的出现为我们提供了一种科学的方法,能够确保我们的信息在传输和存储过程中不被未授权的人访问和篡改。本文将简要介绍密码学的基本原理和应用领域,以及其在保护数字化生活中的重要性。通过了解密码学的基础知识,我们将能更好地保护个人隐私和敏感信息,建立一个安全可信的网络环境。密码学是研究编制密码和破译密码的技术科学。

裴蜀定理(Bézout’s identity)

最新发布

m0_73887414的博客

03-02

870

这个定理的意义在于,我们可以用两个整数的线性组合来表示它们的最大公约数。这在数论和密码学中有着重要的应用,特别是在密码学中的一些加密算法中,例如 RSA 算法中的密钥生成过程。这个算法在数论和密码学中被广泛应用,因为它不仅提供了最大公约数的值,还提供了满足裴蜀定理的。这个结论在密码学中有着重要的应用,特别是在求解模逆元(Modular Inverse)的过程中。裴蜀定理的证明通常使用扩展欧几里得算法,这是一种递归算法,可以计算出最大公约数以及相应的。的线性组合,使得它们的和等于它们的最大公约数。

密码学——基本概念

CCC_B的博客

02-28

371

在计算机和通信技术发达的现代社会,密码已经成为防止信息被篡改,盗取等方面不可或缺的技术。可应用于:本人身份认证,网上交易加密和认证。保证文件不被篡改的电子签名。电子邮件的加密等等领域。

用C语言写一个古典密码学算法的加密解密代码,其中包含移位密码,代替密码,置换密码

05-29

好的,我可以为您提供一个包含三种古典密码学算法的C语言代码,分别是移位密码、代替密码和置换密码,如下所示:

```

#include

#include

// 移位密码加密函数

void shift_encrypt(char *str, int shift) {

int len = strlen(str);

for (int i = 0; i < len; i++) {

if (str[i] >= 'A' && str[i] <= 'Z') {

str[i] = ((str[i] - 'A') + shift) % 26 + 'A';

} else if (str[i] >= 'a' && str[i] <= 'z') {

str[i] = ((str[i] - 'a') + shift) % 26 + 'a';

}

}

}

// 移位密码解密函数

void shift_decrypt(char *str, int shift) {

int len = strlen(str);

for (int i = 0; i < len; i++) {

if (str[i] >= 'A' && str[i] <= 'Z') {

str[i] = ((str[i] - 'A') - shift + 26) % 26 + 'A';

} else if (str[i] >= 'a' && str[i] <= 'z') {

str[i] = ((str[i] - 'a') - shift + 26) % 26 + 'a';

}

}

}

// 代替密码加密函数

void substitution_encrypt(char *str, char *key) {

int len = strlen(str);

for (int i = 0; i < len; i++) {

if (str[i] >= 'A' && str[i] <= 'Z') {

str[i] = key[str[i] - 'A'];

} else if (str[i] >= 'a' && str[i] <= 'z') {

str[i] = key[str[i] - 'a'] + 32;

}

}

}

// 代替密码解密函数

void substitution_decrypt(char *str, char *key) {

int len = strlen(str);

for (int i = 0; i < len; i++) {

if (str[i] >= 'A' && str[i] <= 'Z') {

for (int j = 0; j < 26; j++) {

if (key[j] == str[i]) {

str[i] = j + 'A';

break;

}

}

} else if (str[i] >= 'a' && str[i] <= 'z') {

for (int j = 0; j < 26; j++) {

if (key[j] + 32 == str[i]) {

str[i] = j + 'a';

break;

}

}

}

}

}

// 置换密码加密函数

void permutation_encrypt(char *str, char *key) {

int len = strlen(str);

char tmp[len + 1];

memset(tmp, 0, sizeof(tmp));

for (int i = 0; i < len; i++) {

tmp[i] = str[key[i] - '1'];

}

strcpy(str, tmp);

}

// 置换密码解密函数

void permutation_decrypt(char *str, char *key) {

int len = strlen(str);

char tmp[len + 1];

memset(tmp, 0, sizeof(tmp));

for (int i = 0; i < len; i++) {

for (int j = 0; j < len; j++) {

if (key[j] - '1' == i) {

tmp[j] = str[i];

break;

}

}

}

strcpy(str, tmp);

}

int main() {

char str[100], key[26];

int shift;

printf("请输入要加密的字符串:");

scanf("%s", str);

printf("请输入移位数:");

scanf("%d", &shift);

shift_encrypt(str, shift);

printf("移位密码加密后的结果:%s\n", str);

shift_decrypt(str, shift);

printf("移位密码解密后的结果:%s\n", str);

printf("请输入代替密码的密钥(26个字母的排列):");

scanf("%s", key);

substitution_encrypt(str, key);

printf("代替密码加密后的结果:%s\n", str);

substitution_decrypt(str, key);

printf("代替密码解密后的结果:%s\n", str);

printf("请输入置换密码的密钥(1~%d的数字的排列):", strlen(str));

scanf("%s", key);

permutation_encrypt(str, key);

printf("置换密码加密后的结果:%s\n", str);

permutation_decrypt(str, key);

printf("置换密码解密后的结果:%s\n", str);

return 0;

}

```

这个代码包含了三个函数分别用于移位密码、代替密码和置换密码的加密和解密操作,您只需要输入要加密的字符串以及相应的密钥或移位数即可得到加密和解密后的结果。

“相关推荐”对你有帮助么?

非常没帮助

没帮助

一般

有帮助

非常有帮助

提交

江户川柯壮

CSDN认证博客专家

CSDN认证企业博客

码龄6年

人工智能领域优质创作者

211

原创

1767

周排名

154万+

总排名

168万+

访问

等级

1万+

积分

7万+

粉丝

1819

获赞

356

评论

6569

收藏

私信

关注

热门文章

灰色关联度分析(Grey Relation Analysis,GRA)原理详解

234662

随机森林(Random Forest)算法原理

202140

希尔伯特变换(Hilbert Transform)简介及其物理意义

167355

中国知网(cnki)上caj格式转pdf的方法

122597

Pytorch中的torch.gather函数的含义

79544

分类专栏

机器学习图像处理

16篇

强化学习

1篇

图算法

1篇

自然语言处理

3篇

深度学习专题

17篇

图像处理

19篇

机器学习

26篇

传统密码与暗号

1篇

LeetCode笔记

29篇

vim

算法

8篇

杂项

24篇

Python

17篇

LeetCode

28篇

人类语言学习笔记

2篇

私人收藏夹

1篇

计算机等级考试笔记

13篇

JavaScript

Geophysics

7篇

Linux learning

4篇

Git 札记

3篇

kaggle

2篇

信号处理

1篇

about GAN

5篇

实验室笔记

2篇

IQA

5篇

深度学习

22篇

word

1篇

excel

1篇

wps

1篇

Matlab

pytorch

2篇

检测相关

4篇

caffe

5篇

object detection

1篇

Android

1篇

意识科学

1篇

因果推断

2篇

遥感图像

2篇

java

6篇

hadoop

3篇

MySQL

1篇

推理札记

1篇

最新评论

希尔伯特变换(Hilbert Transform)简介及其物理意义

我爱一条柴!:

您好,我是在希尔伯特滤波器遇到麻烦的打工人,我得到的滤波器结果相位展开后和matlab自带的hilbert函数结果差不多,但是微分后频率完全不能看。。最后重点是:我处理的信号是1.4Mhz到2Mhz增长式变换的变频正弦波。。但是目前不知道怎么得到合理的时频图

关于图像隐写术的数据集下载

Jocelyn_hhh:

请问有SZUBase数据集的下载方式吗?

关于Linux中的apt-get的相关操作及原理

cqutlqxjy:

apt-get install 中 下载了软件包后,并解压,自动完成配置

自动完成配置可以给出详细执行的命令吗

关于图像隐写术的数据集下载

ai-childer:

你好没礼貌

灰色关联度分析(Grey Relation Analysis,GRA)原理详解

m0_74389201:

博主你好,文献的数据结论有否有错误,我以全部算只有大小符合,具体数值不符合。

您愿意向朋友推荐“博客详情页”吗?

强烈不推荐

不推荐

一般般

推荐

强烈推荐

提交

最新文章

【计算机视觉】一个简单易上手的图像分类任务pipeline代码

从零开始实现一个简单的CycleGAN项目

算法工程师的自我修养(AlgorithmEngineerPrepares)

2022年2篇

2021年1篇

2020年13篇

2019年31篇

2018年135篇

2017年31篇

目录

目录

分类专栏

机器学习图像处理

16篇

强化学习

1篇

图算法

1篇

自然语言处理

3篇

深度学习专题

17篇

图像处理

19篇

机器学习

26篇

传统密码与暗号

1篇

LeetCode笔记

29篇

vim

算法

8篇

杂项

24篇

Python

17篇

LeetCode

28篇

人类语言学习笔记

2篇

私人收藏夹

1篇

计算机等级考试笔记

13篇

JavaScript

Geophysics

7篇

Linux learning

4篇

Git 札记

3篇

kaggle

2篇

信号处理

1篇

about GAN

5篇

实验室笔记

2篇

IQA

5篇

深度学习

22篇

word

1篇

excel

1篇

wps

1篇

Matlab

pytorch

2篇

检测相关

4篇

caffe

5篇

object detection

1篇

Android

1篇

意识科学

1篇

因果推断

2篇

遥感图像

2篇

java

6篇

hadoop

3篇

MySQL

1篇

推理札记

1篇

目录

评论 1

被折叠的  条评论

为什么被折叠?

到【灌水乐园】发言

查看更多评论

添加红包

祝福语

请填写红包祝福语或标题

红包数量

红包个数最小为10个

红包总金额

红包金额最低5元

余额支付

当前余额3.43元

前往充值 >

需支付:10.00元

取消

确定

下一步

知道了

成就一亿技术人!

领取后你会自动成为博主和红包主的粉丝

规则

hope_wisdom 发出的红包

实付元

使用余额支付

点击重新获取

扫码支付

钱包余额

0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

密码学:凯撒密码(移位密码)原理、加密与解密(Python代码示例) - 没事摸摸小肚子 - 博客园

密码学:凯撒密码(移位密码)原理、加密与解密(Python代码示例) - 没事摸摸小肚子 - 博客园

会员

周边

新闻

博问

AI培训

云市场

所有博客

当前博客

我的博客

我的园子

账号设置

简洁模式 ...

退出登录

注册

登录

观取

博观而约取,厚积而薄发

博客园

首页

新随笔

联系

订阅

管理

密码学:凯撒密码(移位密码)原理、加密与解密(Python代码示例)

原理

凯撒密码(移位密码):是一种替换加密,明文中的所有字母都在字母表上向后或向前按照一个固定数目进行偏移后被替换成密文。

例如,偏移量为3位的时候:A对应D,B对应E,C对应F等

当偏移量为13位的时候,凯撒密码又叫回转密码(ROT13):明文加密得到密文,密文再加密就会得到明文(因为偏移量为13位,一共26个字母,加密两次就会回到明文了),在CTF中题目关键字眼会有回转、回旋、十三踢等字眼。

题目:阿哒,看我回旋十三踢!

密文:Nusynt

明文:AHflag

加密

def caesar_cipher(plaintext, shift):

ciphertext = ""

for char in plaintext:

if char.isalpha():

# 将字母转换为0-25之间的数字,a为0,b为1,依此类推

char_num = ord(char.lower()) - ord('a')

# 将数字加上偏移量,并对26取模

shifted_num = (char_num + shift) % 26

# 将数字转换回字母

shifted_char = chr(shifted_num + ord('a'))

# 如果原来的字母是大写,就将加密后的字母也变成大写

if char.isupper():

shifted_char = shifted_char.upper()

ciphertext += shifted_char

else:

# 如果不是字母,就不进行加密

ciphertext += char

return ciphertext

# 获取用户输入的明文和偏移量

plaintext = input("请输入明文:")

shift = int(input("请输入偏移量:"))

# 调用函数进行加密

ciphertext = caesar_cipher(plaintext, shift)

# 输出加密后的密文

print("加密后的密文为:", ciphertext)

解密(枚举法)

def caesar_cipher_decrypt(ciphertext, max_shift):

"""

用凯撒密码解密密文,展示所有可能的解密结果

参数:

ciphertext -- 密文字符串

max_shift -- 最大位移量

返回值:

无返回值,直接打印所有解密结果

"""

for shift in range(max_shift + 1):

plaintext = ""

for char in ciphertext:

if char.isalpha():

# 将字母转换为0-25之间的数字,a为0,b为1,依此类推

char_num = ord(char.lower()) - ord('a')

# 将数字加上偏移量,并对26取模

shifted_num = (char_num - shift) % 26

# 将数字转换回字母

shifted_char = chr(shifted_num + ord('a'))

# 如果原来的字母是大写,就将加密后的字母也变成大写

if char.isupper():

shifted_char = shifted_char.upper()

plaintext += shifted_char

else:

# 如果不是字母,就不进行解密

plaintext += char

# 打印解密结果

print(f"Shift = {shift}: {plaintext}")

ciphertext = input("请输入密文:")

max_shift = 25

caesar_cipher_decrypt(ciphertext, max_shift)

posted @

2023-06-23 10:36 

没事摸摸小肚子 

阅读(1891) 

评论(0) 

编辑 

收藏 

举报

会员力量,点亮园子希望

刷新页面返回顶部

公告

Copyright © 2024 没事摸摸小肚子

Powered by .NET 8.0 on Kubernetes

【古典密码】凯撒加密 - 知乎

【古典密码】凯撒加密 - 知乎首发于论不秃的程序员的综合素养切换模式写文章登录/注册【古典密码】凯撒加密RemyReyn til Rúna!概况 如果需要保密,信中便用暗号,也即是改变字母顺序,使局外人无法组成一个单词。如果想要读懂和理解它们的意思,得用第4个字母置换第一个字母,即以D代A,余此类推. ——苏维托尼乌斯,罗马十二帝王传 凯撒密码最早由古罗马军事统帅盖乌斯·尤利乌斯·凯撒在军队中用来传递加密信息,故称凯撒密码。此为一种位移加密手段,只对26个(大小写)字母进行位移加密,规则相当简单,容易被破解。凯撒密码属于替代加密,即用另一个字符来替换明文中的原字符,其中的对应关系只有加密者所知。而凯撒密码就是最简单的一种替代加密手段。到了现代,凯撒密码虽然早已经无法保证人们的信息安全,但还是会包含于一些复杂的加密方法中,通常被作为其他更复杂的加密方法中的一个步骤,例如维吉尼亚密码。加密原理凯撒密码的替换方法是通过排列明文和密文字母表,密文字母表示通过将明文字母表向左或向右移动一个固定数目的位置。例如,当偏移量是左移3的时候(解密时的密钥就是3):明文字母表:ABCDEFGHIJKLMNOPQRSTUVWXYZ

密文字母表:DEFGHIJKLMNOPQRSTUVWXYZABC举个例子当偏移量为左移3时,D本来是第4个字母,在字母表中向左移3位,即从第4位变成第1位。也就是在密文字母表中排名第一位。而加密者使用时,加密者查找明文字母表中需要加密的消息中的每一个字母所在位置,并且写下密文字母表中对应的字母。需要解密的人则根据事先已知的密钥反过来操作,得到原来的明文。例如:明文:THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG

密文:WKH TXLFN EURZQ IRA MXPSV RYHU WKH ODCB GRJ凯撒密码的加密、解密方法还能够通过同余的数学方法进行计算。首先将字母用数字代替,A=0,B=1,...,Z=25。此时偏移量为n的加密方法即为: En(x)=(x+n)\ mod\ 26 \\ 解密就是: Dn(x)=(x-n)\ mod\ 26 \\ 特定凯撒密码名称根据偏移量的不同,还存在若干特定的凯撒密码名称:偏移量为10:Avocat(A→K)偏移量为13:ROT13偏移量为-5:Cassis (K 6)偏移量为-6:Cassette (K 7)破解方式暴力破解凯撒密码的原理导致,总共也就只有26种可能,在这种情况下,我们完全可以把偏移量全部试一遍。事实上现在网络上的解法都是如此。举个例子:密文: N FR MJWJXDKey #1: M EQ LIVIWC Key #2: L DP KHUHVB Key #3: K CO JGTGUA Key #4: J BN IFSFTZ Key #5: I AM HERESY Key #6: H ZL GDQDRX Key #7: G YK FCPCQW Key #8: F XJ EBOBPV Key #9: E WI DANAOU Key #10: D VH CZMZNT Key #11: C UG BYLYMS Key #12: B TF AXKXLR Key #13: A SE ZWJWKQKey #14: Z RD YVIVJP Key #15: Y QC XUHUIO Key #16: X PB WTGTHN Key #17: W OA VSFSGM Key #18: V NZ URERFL Key #19: U MY TQDQEK Key #20: T LX SPCPDJ Key #21: S KW ROBOCI Key #22: R JV QNANBH Key #23: Q IU PMZMAG Key #24: P HT OLYLZF Key #25: O GS NKXKYE Key #26: N FR MJWJXD显然,可以看出第四个即为明文。频率分析单纯的凯撒加密作为一种替代加密方式,并且,在这个加密过程中他原本的明文所代表的含义是没变的。当密文长度足够大的情况下,可以先分析密文中每个字母出现的频率,然后将这一频率与正常情况下的该语言字母表中所有字母的出现频率做比较。例如在英语中,正常明文中字母E和T出现的频率特别高,而字母Q和Z出现的频率特别低,而在法语中出现频率最高的字母是E,最低的是K和W。可以通过这一特点,分析密文字母出现的频率,可以估计出正确的偏移量。此外,有时还可以将频率分析从字母推广到单词,例如英语中,出现频率最高的单词是:the, of, and, a, to, in...。我们可以通过将最常见的单词的所有可能的25组密文,编组成字典,进行分析。比如QEB可能是the,MPQY可能是单词know(当然也可能是aden)。但是频率分析也有其局限性,它对于较短或故意省略元音字母或者其他缩写方式写成的明文加密出来的密文进行解密并不适用。举个例子:明文:THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG

密文:WKH TXLFN EURZQ IRA MXPSV RYHU WKH ODCB GRJ这段密文中,频率出现最高的是字母R和字母H。我们推断这两个应该是元音字母。并且我们可以注意到,WKH出现过两次,很有可能代表的是单词the。而且字母H也是高频率字母,所以我们可以猜测字母H代表的是字母E。E是第5个字母,而H是第8个字母,所以显然,偏移量为3,这样便可以轻松解出明文了。编辑于 2021-08-19 17:10密码密码加密信息安全和密码学​赞同 10​​添加评论​分享​喜欢​收藏​申请转载​文章被以下专栏收录论不秃的程序员的综合素养我秃了,我

凯撒密码(凯撒移位)_凯撒位移-CSDN博客

>

凯撒密码(凯撒移位)_凯撒位移-CSDN博客

凯撒密码(凯撒移位)

最新推荐文章于 2024-03-05 22:24:06 发布

慎铭

最新推荐文章于 2024-03-05 22:24:06 发布

阅读量8.1k

收藏

9

点赞数

分类专栏:

CTF-MISC

大杂烩

文章标签:

安全

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/qq_52828510/article/details/122560142

版权

CTF-MISC

同时被 2 个专栏收录

18 篇文章

3 订阅

订阅专栏

大杂烩

16 篇文章

0 订阅

订阅专栏

  在密码学中,恺撒密码(英语:Caesar cipher),或称恺撒加密、恺撒变换、变换加密,是一种最简单且最广为人知的加密技术。它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推。

  恺撒密码通常被作为其他更复杂的加密方法中的一个步骤,例如维吉尼亚密码。恺撒密码还在现代的ROT13系统中被应用。但是和所有的利用字母表进行替换的加密技术一样,恺撒密码非常容易被破解,而且在实际应用中也无法保证通信安全。

  根据偏移量的不同,还存在若干特定的恺撒密码名称:

- 偏移量为10:Avocat(A→K)

- 偏移量为13:ROT13

- 偏移量为-5:Cassis (K 6)

- 偏移量为-6:Cassette (K 7)

密码破解

  即使使用唯密文攻击,恺撒密码也是一种非常容易破解的加密方式。可能有两种情况需要考虑:

(1)攻击者知道(或者猜测)密码中使用了某个简单的替换加密方式,但是不确定是恺撒密码; (2)攻击者知道(或者猜测)使用了恺撒密码,但是不知道其偏移量。

  对于第一种情况,攻击者可以通过使用诸如频率分析或者样式单词分析的方法, [3] 马上就能从分析结果中看出规律,得出加密者使用的是恺撒密码。

  对于第二种情况,解决方法更加简单。由于使用恺撒密码进行加密的语言一般都是字母文字系统,因此密码中可能是使用的偏移量也是有限的,例如使用26个字母的英语,它的偏移量最多就是25(偏移量26等同于偏移量0,即明文;偏移量超过26,等同于偏移量1-25)。因此可以通过穷举法,很轻易地进行破解。其中一种方法是在表格中写下密文中的某个小片段使用所有可能的偏移量解密后的内容——称为候选明文,然后分析表格中的候选明文是否具有实际含义,得出正确的偏移量,解密整个密文。例如,被选择出的密文片段是"EXXEGOEXSRGI",从右表中的候选明文,我们可以很快看出其正确的偏移量是4。也可以通过在每一个密文单词的每一个字母下面,纵向写下整个字母表其他字母,然后可以通过分析,得出其中的某一行便是明文。

  另外一种攻击方法是通过频率分析。当密文长度足够大的情况下,可以先分析密文中每个字母出现的频率,然后将这一频率与正常情况下的该语言字母表中所有字母的出现频率做比较。例如在英语中,正常明文中字母E和T出现的频率特别高,而字母Q和Z出现的频率特别低,而在法语中出现频率最高的字母是E,最低的是K和W。可以通过这一特点,分析密文字母出现的频率,可以估计出正确的偏移量。此外,有时还可以将频率分析从字母推广到单词,例如英语中,出现频率最高的单词是:the, of, and, a, to, in…。我们可以通过将最常见的单词的所有可能的25组密文,编组成字典,进行分析。比如QEB可能是the,MPQY可能是单词know(当然也可能是aden)。但是频率分析也有其局限性,它对于较短或故意省略元音字母或者其他缩写方式写成的明文加密出来的密文进行解密并不适用。

  另外,通过多次使用恺撒密码来加密并不能获得更大的安全性,因为使用偏移量A加密得到的结果再用偏移量B加密,等同于使用A+B的偏移量进行加密的结果。

数学公式

加密

E

n

(

x

)

=

(

x

+

n

)

 

m

o

d

 

26

E_n(x)=(x+n)\ mod\ 26

En​(x)=(x+n) mod 26

解密

D

n

(

x

)

=

(

x

n

)

 

m

o

d

 

26

D_n(x)=(x-n)\ mod\ 26

Dn​(x)=(x−n) mod 26

优惠劵

慎铭

关注

关注

0

点赞

9

收藏

觉得还不错?

一键收藏

知道了

0

评论

凯撒密码(凯撒移位)

  在密码学中,恺撒密码(英语:Caesar cipher),或称恺撒加密、恺撒变换、变换加密,是一种最简单且最广为人知的加密技术。它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推。  恺撒密码通常被作为其他更复杂的加密方法中的一个步骤,例如维吉尼亚密码。恺撒密码还在现代的ROT13系统中被应用。但是和所有的利用字母表进行替换的加密技术一样,恺撒密码非常容易被破解,而且在实际应用

复制链接

扫一扫

专栏目录

C语言凯撒移位加密算法

03-14

c语言编写,欢迎扔板砖

//移位算法

#include

#include

#define SIZE 50

int main()

{

//i 用于计数输入个数,j 为临时变量, plain 存放明文, cipher 存放密文,decryption存放解密后文本,fpp 为明文文件指针,fpc 为密文文件指针

int i,j;

char plain[SIZE],cipher[SIZE],decryption[SIZE],ciphertext[SIZE];

FILE * fpp,* fpc,* fpd;

//加密

//建立新的明文TXT文件

printf("Caesar algorithm\n");

if((fpp=fopen("plain.txt","w+"))==NULL)

{

printf("creat new plain file error!\n");

exit(0);

}

//输入明文

printf("input plain alphabet:\n");

i=0;

scanf("%c",&plain[i]);

while(plain[i]!='\n'&&i

{

i++;

scanf("%c",&plain[i]);

}

printf("success input %d characters\n",i);

//将明文转存到文件中

for(j=0;j

{

if(fwrite(&plain[j],sizeof(char),1,fpp)!=1)

{

printf("saving plain file error!\n");

exit(0);

}

}

printf("success saving plain text!\n");

//加密

for(j=0;j

{

cipher[j]=plain[j]+3;

if(cipher[j]99)

{

printf("cipher %d = %c\n",j,cipher[j]);

}

else if(cipher[j]>122)

{

cipher[j]=cipher[j]%122+96;

printf("cipher %d = %c\n",j,cipher[j]);

}

else if(cipher[j]>90)

{

cipher[j]=cipher[j]%90+64;

printf("cipher %d = %c\n",j,cipher[j]);

}

else

{

printf("cipher %d = %c\n",j,cipher[j]);

}

}

//建立密文文件

if((fpc=fopen("cipher.txt","w+"))==NULL)

{

printf("create new cipher file error!");

exit(0);

}

for(j=0;j

{

if(fwrite(&cipher[j],sizeof(char),1,fpc)!=1)

{

printf("saving cipher file error!");

exit(0);

}

}

printf("success saving cipher file!");

printf("\n");

//解密

printf("input ciphertext alphabet:\n");

i=0;

scanf("%c",&ciphertext[i]);

while(ciphertext[i]!='\n'&&i

{

i++;

scanf("%c",&ciphertext[i]);

}

for(j=0;j

{

decryption[j]=ciphertext[j]-3;

if(decryption[j]90&&decryption[j]<97)

{

decryption[j]=123-(97-decryption[j]);

printf("character %d = %c\n",j,decryption[j]);

}

else

{

密码学——凯撒密码

热门推荐

weixin_47585015的博客

11-21

2万+

文章目录前言一、凯撒密码简介二、使用步骤1.引入库2.读入数据总结

前言

本内容为博主学习凯撒密码的笔记,如有错误,烦请指正。

一、凯撒密码简介

凯撒密码是最早的代换密码,使用单表代换。其基本思想是:通过把字母移动一定的位数来实现加密和解密。明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推X将变成A,Y变成B,Z变成C。位数就是凯撒密码加密和解密的密钥。

例子如下:

二、使用步骤

1.引入库

代码如下

参与评论

您还未登录,请先

登录

后发表或查看评论

凯撒密码原理(加解密)

weixin_74790320的博客

12-10

553

最早由古罗马军事统帅盖乌斯·尤利乌斯·凯撒在军队中用来传递加密信息,故称凯撒密码。此为一种位移加密手段,只对26个(大小写)字母进行位移加密,规则相当简单,容易被破解。凯撒密码属于替代加密,即用另一个字符来替换明文中的原字符,其中的对应关系只有加密者所知。而凯撒密码就是最简单的一种替代加密手段。

移位密码(凯撒密码)

破晓而生,踏浪前行。

04-01

4026

移位密码简介,分析和实现。

古典密码学算法之(一)凯撒移位(Caeserian Shift)

兔角与禅

11-04

9353

缘起

从今天开始,新开一个系列,专门聊一聊经典的密码算法。

首先声明,这个系列谈论的密码不是现代的计算机使用的,基于数论、非对称体制的各种密码学,而是一些在实际历史中或者一些解谜小说中出现的传统的经典加密方法。有时候我们也将其中的一些所组成的称为古典密码学。

现如今,虽然传统加密方法在实际生活中用的不多,但是在很多推理小说中,密码和暗号等要素还是有很多有趣的案例的。比如福尔摩斯系列中的...

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

~Up~

11-10

6416

凯撒加密、解密算法C++实验

【古典密码】 凯撒密码 移位变换 仿射变换 多表代换 Python

Herk 的博客

10-28

3664

本文附有丰富的代码,故文章冗长,请对照目录查阅,各大板块均有上下文提示

目录

古典密码简介

移位变换:

多表代换:

加密算法思路

仿射变换加密

多表代换加密

例题:仿射变换

例题:多表代换

古典密码简介

古典密码主要有置换和代换的方法。置换:字母重新排列,字母本身不变,但其位置改变了(凯撒密码、移位变换)。代换:将明文中的字符替代成其他字符(仿射变换、多表代换)。

在线性空间的变化中,古典加密就是移动并拉伸物体,让物体变得与原来不一样;解密解释将物...

凯撒密码

weixin_43723935的博客

10-03

6398

为了防止信息被别人轻易窃取,需要把电码明文通过加密方式变换成为密文。输入一个以回车符为结束标志的字符串(少于80个字符),再输入一个整数offset,用凯撒密码将其加密后输出。恺撒密码是一种简单的替换加密技术,将明文中的所有字母都在字母表上偏移offset位后被替换成密文,当offset大于零时,表示向后偏移;当offset小于零时,表示向前偏移。

输入格式:

输入第一行给出一个以回车结束的非空字符串(少于80个字符);第二行输入一个整数offset。

输出格式:

输出加密后的结果字符串。

输入样

7-2 凯撒密码 (20分)

让,

08-02

211

为了防止信息被别人轻易窃取,需要把电码明文通过加密方式变换成为密文。输入一个以回车符为结束标志的字符串(少于80个字符),再输入一个整数offset,用凯撒密码将其加密后输出。是一种简单的替换加密技术,将明文中的所有字母都在字母表上偏移offset位后被替换成密文,当offset大于零时,表示向后偏移;当offset小于零时,表示向前偏移。输入第一行给出一个以回车结束的非空字符串(少于80个字符);第二行输入一个整数offset。7-2 凯撒密码 (20分)输出加密后的结果字符串。

凯撒密码(移位加密)

野原新之助

12-18

1万+

简介:

移位加密是一种古典的替换加密技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。

例如:当偏移量是3的时候,所有的字母A将被替换成D,B替换成E,此时的加密方式称为凯撒密码。

此程序进行动态录入移位数,称之为密钥;并且仅支持输入大小写字母。

思路:

利用取余的方式实现移位

代码:

–加密过程–

#include &lt;stdio.h&gt;

#...

凯撒密码转换器

08-31

支持对字母的转换加密,解密,有需要的可以下载使用!

凯撒密码加密解密

06-10

凯撒密码加密解密

凯撒密码变体-可打印字符范围.py

04-03

凯撒密码变体,范围提升至可打印字符,并且遍历所有移位 一次性输出输入字符串的所有可打印字符范围的凯撒移位

python 密码学示例——凯撒密码的实现

12-16

凯撒密码 是密码学中的一种简单的 替换加密 技术。明文中的所有字符都会替换为其按照字母表顺序向左(或向右)偏移一定量后得到的新字母,作为加密后密文。 如当偏移量为 3 时,明文中所有的字母 A 将被替换成字母 D...

构建安全的REST API:OAuth2和JWT实践

宋小黑的博客

03-03

1176

说到REST API,咱们先来搞清楚几个概念。REST(Representational State Transfer)是一种设计风格,它定义了一套规则,用于创建网络服务。通过使用HTTP协议的方法,如GET、POST、PUT、DELETE等,REST API允许应用程序或服务访问网络上的资源。举个例子,假如小黑现在要开发一个天气预报应用。这个应用需要从一个天气服务提供商那里获取数据。这时候,REST API就是小黑和天气服务提供商之间的桥梁。

安全防御第七次作业

最新发布

小白

03-05

139

问题:在FW7和FW8之间建立一条IPSEC通道保证10.0.2.0/24网段。可以正常访问到192.168.1.0/24。注:由于电脑问题, 我只启动了相关的设备。

JavaSec 基础之五大不安全组件

akdelt的博客

03-03

831

Fastjson 是阿里巴巴的开源 JSON 解析库,它可以解析 JSON 格式的字符串,支持将 Java Bean 序列化为 JSON 字符串,也可以从 JSON 字符串反序列化到 JavaBean。攻击者可以通过在 json 字符串中指定变量的具体类型 (子类或接口实现类),来实现实例化指定的类,借助某些特殊的 class,如 TemplatesImpl,可以实现任意代码执行。该内容传递到后端被log4j2打印出来,就会触发恶意的Class的加载执行(可执行任意后台指令),从而达到攻击的目的。

“相关推荐”对你有帮助么?

非常没帮助

没帮助

一般

有帮助

非常有帮助

提交

慎铭

CSDN认证博客专家

CSDN认证企业博客

码龄3年

郑州大学

110

原创

29万+

周排名

8万+

总排名

19万+

访问

等级

1179

积分

106

粉丝

88

获赞

10

评论

397

收藏

私信

关注

热门文章

监督学习概述

18011

栅栏密码详解

12606

凯撒密码(凯撒移位)

8136

XFF(X-FORWARDED-FOR)

7138

培根密码及应用

6436

分类专栏

计算机网络

3篇

计算机组成与结构

编程随笔

9篇

逆向

1篇

Winpcap

数据结构与算法笔记

14篇

MATLAB

4篇

大杂烩

16篇

Web安全

15篇

Python

3篇

CTF-MISC

18篇

机器学习

3篇

Linux操作系统

14篇

C++深入学习笔记

21篇

算法错题

5篇

推荐系统

2篇

最新评论

求最小公因数算法

2301_76726078:

你这个求得是最小公倍数,不是最小公因数OK,别误导人了

递归优化——尾递归和循环

m0_73530965:

阶乘的尾递归形式第二个if判断条件错了

应该是n==1

Bugku——Misc——0和1的故事

halodoom:

这个脚本我不信你可以生成无定位的二维码,那个文件里面数据有换行这些干扰这样怎么可能直接清除掉

递归优化——尾递归和循环

qq_15848379:

最后一个循环写错了吧,输出不对。应该是:

for(i=3;i<=n;++i){

c=a+b;

a=b;

b=c;

}

求最大公约数欧几里得算法原理证明

慎铭:

对,d1 | r

您愿意向朋友推荐“博客详情页”吗?

强烈不推荐

不推荐

一般般

推荐

强烈推荐

提交

最新文章

Dos的三种攻击类型

排队时延与流量强度

PE文件头详解

2023年4篇

2022年39篇

2021年68篇

目录

目录

分类专栏

计算机网络

3篇

计算机组成与结构

编程随笔

9篇

逆向

1篇

Winpcap

数据结构与算法笔记

14篇

MATLAB

4篇

大杂烩

16篇

Web安全

15篇

Python

3篇

CTF-MISC

18篇

机器学习

3篇

Linux操作系统

14篇

C++深入学习笔记

21篇

算法错题

5篇

推荐系统

2篇

目录

评论

被折叠的  条评论

为什么被折叠?

到【灌水乐园】发言

查看更多评论

添加红包

祝福语

请填写红包祝福语或标题

红包数量

红包个数最小为10个

红包总金额

红包金额最低5元

余额支付

当前余额3.43元

前往充值 >

需支付:10.00元

取消

确定

下一步

知道了

成就一亿技术人!

领取后你会自动成为博主和红包主的粉丝

规则

hope_wisdom 发出的红包

实付元

使用余额支付

点击重新获取

扫码支付

钱包余额

0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

恺撒移位密码 - 知乎

恺撒移位密码 - 知乎首页知乎知学堂发现等你来答​切换模式登录/注册恺撒移位密码恺撒移位密码是一种替代密码,密码使用起源于古罗马时期,《高卢战记》中有描述恺撒曾经使用密码来传递信息。恺撒移位密码通过把字母按顺序推后起3位起到加密作用,如把字母A换作字母D,把字母B换作字母E。...查看全部内容关注话题​管理​分享​百科讨论精华视频等待回答简介恺撒移位密码是一种替代密码,密码使用起源于古罗马时期,《高卢战记》中有描述恺撒曾经使用密码来传递信息。恺撒移位密码通过把字母按顺序推后起3位起到加密作用,如把字母A换作字母D,把字母B换作字母E。更多信息中文名恺撒移位密码起源古罗马时期出处《高卢战记》类别替代密码数据由搜狗百科提供查看百科全文 ​浏览量4 万讨论量13  帮助中心知乎隐私保护指引申请开通机构号联系我们 举报中心涉未成年举报网络谣言举报涉企虚假举报更多 关于知乎下载知乎知乎招聘知乎指南知乎协议更多京 ICP 证 110745 号 · 京 ICP 备 13052560 号 - 1 · 京公网安备 11010802020088 号 · 京网文[2022]2674-081 号 · 药品医疗器械网络信息服务备案(京)网药械信息备字(2022)第00334号 · 广播电视节目制作经营许可证:(京)字第06591号 · 服务热线:400-919-0001 · Investor Relations · © 2024 知乎 北京智者天下科技有限公司版权所有 · 违法和不良信息举报:010-82716601 · 举报邮箱:jubao@zhihu.

凯撒方阵_百度百科

_百度百科 网页新闻贴吧知道网盘图片视频地图文库资讯采购百科百度首页登录注册进入词条全站搜索帮助首页秒懂百科特色百科知识专题加入百科百科团队权威合作下载百科APP个人中心收藏查看我的收藏0有用+10凯撒方阵播报讨论上传视频加密方法凯撒密码也称凯撒移位,是最简单的加密方法之一,相传是古罗马恺撒大帝用来保护重要军情的加密系统,它是一种替代密码。中文名凯撒方阵外文名Kaisermatrix加密公式密文 = (明文 + 位移数) Mod 26解密公式明文 = (密文 - 位移数) Mod 26目录1公式▪加密公式▪解密公式▪应用2其他特例公式播报编辑加密公式密文 = (明文 + 位移数) Mod 26解密公式明文 = (密文 - 位移数) Mod 26应用以《数字城堡》中的一组密码为例:HL FKZC VD LDS只需把每个字母都按字母表中的顺序依次后移一个字母即可——A变成B,B就成了C,依此类推。因此明文为: [1]IM GLAD WE MET英文字母的移位以移25位为一个循环,移26位等于没有移位。所以可以用穷举法列出所有可能的组合。例如:phhw ph diwhu wkh wrjd sduwb利用电脑可以方便地列出所有组合,然后从中选出有意义的话可知明文为:meet me after the toga party其他特例播报编辑The Rail-Fence Cipher也称栅栏易位(Columnar Transposition),即把将要传递的信息中的字母交替排成上下两行,再将下面一行字母排在上面一行的后边,从而形成一段密码。栅栏密码是一种置换密码。例如密文:TEOGSDYUTAENNHLNETAMSHVAED解密过程:先将密文分为两行T E O G S D Y U T A E N NH L N E T A M S H V A E D再按上下上下的顺序组合成一句话THE LONGEST DAY MUST HAVE AN END..............................................................加密时不一定非用两栏,还是举《数字城堡》中的一个例子,密文为:PFEE SESN RETM MFHA IRWE OOIG MEEN NRMA ENET SHAS DCNS IIAA IEER BRNK FBLE LODI去掉空格:PFEESESNRETMMFHAIRWEOOIGMEENNRMAENETSHASDCNSIIAAIEERBRNKFBLELODI共64个字符,以8个字符为一栏,排列成8*8的方阵(凯撒方阵):P F E E S E S NR E T M M F H AI R W E O O I GM E E N N R M AE N E T S H A SD C N S I I A AI E E R B R N KF B L E L O D I从上向下竖着读:PRIMEDIFFERENCEBETWEENELEMENTSRESMONSIBLEFORHIROSHIMAANDNAGASAKI插入空格:PRIME DIFFERENCE BETWEEN ELEMENTS RESMONSIBLE FOR HIROSHIMA AND NAGASAKI (广岛和长崎的原子弹轰炸的最主要区别)Vigenère Cipher由于频率分析法可以有效的破解单表替换密码,法国密码学家维吉尼亚于1586年提出一种多表替换密码,即维吉尼亚密码,也称维热纳尔密码。维吉尼亚密码引入了“密钥”的概念,即根据密钥来决定用哪一行的密表来进行替换,以此来对抗字频统计。加密算法:例如密钥的字母为[d],明文对应的字母[b]。根据字母表的顺序[d]=4,[b]=2,那么密文就是[d]+[b]-1=4+2-1=5=[e],因此加密的结果为[e]。解密即做此逆运算。加密公式:密文 = (明文 + 密钥) Mod 26 - 1解密公式:明文 = [26 + (密文 - 密钥)] Mod 26 + 1也可以用查表法来进行加密:例如密钥的字母为[d],明文对应的字母[b],在下表格第一行找到字母"d"(深蓝色),再在左边第一列找到字母"b"(绿色),两个字母的交叉点(b行d列)就是字母"E",所以对应的密文字母为[e]。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 za 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 Zb 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 Ac C D E F G H I J K L M N O P Q R S T U V W X Y Z A Bd D E F G H I J K L M N O P Q R S T U V W X Y Z A B Ce E F G H I J K L M N O P Q R S T U V W X Y Z A B C Df F G H I J K L M N O P Q R S T U V W X Y Z A B C D Eg G H I J K L M N O P Q R S T U V W X Y Z A B C D E Fh H I J K L M N O P Q R S T U V W X Y Z A B C D E F Gi I J K L M N O P Q R S T U V W X Y Z A B C D E F G Hj J K L M N O P Q R S T U V W X Y Z A B C D E F G H Ik K L M N O P Q R S T U V W X Y Z A B C D E F G H I Jl L M N O P Q R S T U V W X Y Z A B C D E F G H I J Km M N O P Q R S T U V W X Y Z A B C D E F G H I J K Ln 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 Mo 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 Np P Q R S T U V W X Y Z A B C D E F G H I J K L M N Oq Q R S T U V W X Y Z A B C D E F G H I J K L M N O Pr R S T U V W X Y Z A B C D E F G H I J K L M N O P Qs S T U V W X Y Z A B C D E F G H I J K L M N O P Q Rt T U V W X Y Z A B C D E F G H I J K L M N O P Q R Su U V W X Y Z A B C D E F G H I J K L M N O P Q R S Tv V W X Y Z A B C D E F G H I J K L M N O P Q R S T Uw W X Y Z A B C D E F G H I J K L M N O P Q R S T U Vx X Y Z A B C D E F G H I J K L M N O P Q R S T U V Wy Y Z A B C D E F G H I J K L M N O P Q R S T U V W Xz Z 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假如对如下明文加密:to be or not to be that is the question当选定“have”作为密钥时,加密过程是:密钥第一个字母为[h],明文第一个为[t],因此可以找到在h行t列中的字母[a],依此类推,得出对应关系如下:密钥:ha ve ha veh av eh aveh av eha vehaveha明文:to be or not to be that is the question密文:ao wi vr isa tj fl tcea in xoe lylsomvn新手上路成长任务编辑入门编辑规则本人编辑我有疑问内容质疑在线客服官方贴吧意见反馈投诉建议举报不良信息未通过词条申诉投诉侵权信息封禁查询与解封©2024 Baidu 使用百度前必读 | 百科协议 | 隐私政策 | 百度百科合作平台 | 京ICP证030173号 京公网安备110000020000