凯撒密码例题(凯撒密码算法例题)

2023-02-27 12:56:25 摩斯密码知识 思思

凯撒密码为一种替换密码,此题的加密过程为先进行base64编码,再进行移

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

恺撒密码的加密、解密方法还能够通过同余的数学方法进行计算。首先将字母用数字代替,A=0,B=1,...,Z=25。此时偏移量为n的加密方法即为: E(x) = (x + n) mod 26.

解密就是:

D(x) = (x - n) mod 26.

显而易见,一旦确定了某两个字母的对应关系(即n的值),这种移位密码很容易被破解。

因此,为了使密码有更高的安全性,单字母替换密码就出现了。

明码表: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

密码表: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 S

但是这种加密方式依然可以破解,根据字母使用频度表,分析密文中的字母频率,将其对照即可破解。

不仅如此,凯撒加密对加密数据也是有要求的,一般情况下,它只支持对基本的英文字母进行加密,如果对中文等亚太地区的文字进行加密,结果可想而知,你的隐私将毫无保留的出现在众人面前。有人说,我们可以扩展这个算法,使它支持所有的文字,这么做是可行的,如果采用同余式的方式实现,代码几乎不怎么需要改动,只要字符集本身是Unicode就可以了。但是这种加密的安全性很难满足应用的要求。如果采用单字母替换的方式,程序将需要构建两个巨大的字符数组去保存他们的映射关系,而且扩展性也不好,当然也是不可行的。这样看来,凯撒加密岂不是一无是处了,其实对于一般的应用,凯撒加密还是足以应付的,只要我们对它稍作改进。

凯撒密码例题(凯撒密码算法例题) 第1张

网络安全基础

网络安全通信所需要的基本属性:

1. 机密性

2. 消息完整性

3. 可访问与可用性

4. 身份认证

1. 窃听

2. 插入

3. 假冒

4. 劫持

5. 拒绝服务DoS和分布式拒绝服务DDoS

6. 映射

7. 嗅探

8. IP欺骗

数据加密

      明文:未被加密的消息

      密文:被加密的消息

      加密:伪装消息以隐藏消息的过程,即 明文 密文 的过程.

      解密: 密文 明文 的过程

1. 替代密码 :用密文字母替代明文字母。

    移位密码加密函数:

    

     :加密过程

    :明文信息

     :密钥,表示移几位

     :如果是26个字母,那q就是26

    解密函数:

    

     :解密过程

     :密文

      :密钥

2.  换位密码 :根据一定规则重新排列明文。

    【 例题 】如果对明文“bob.i love you. Alice",利用k=3的凯撒密码加密,得到的密文是什么?利用密钥 "nice" 进行列置换加密后得到的密文是什么?

    【 答案 】 凯撒密码 加密后得到的密文是:

        "ere l oryh brx Dolfh"

         列置换密码 加密后得到的密文是:

        iex bvu bly ooo"

    【 解析 】 凯撒密码 :

        以明文字母b为例,M=2(b的位置为2),k=3,q=26,则:

        密文 ,对应字母e,故b经过加密转为了e

        将明文全部替换后得到的密文 "ere l oryh brx Dolfh"

          列置换密码:

        密钥 "nice" 字母表先后顺序为 "4,3,1,2" ,因此,按这个顺序读出表中字母,构成密文:"iex bvu bly ooo",(密钥有几位就有几列,如果明文不够就补x,然后按列读取)

1. 对称密钥 密码:加密秘钥和解密秘钥相同( ),例如用一个锁将箱子锁起来,这个锁有2把相同的钥匙,锁好之后把另一把钥匙派人送给他。

2. 对称密钥密码 分类 :

     分组密码:DES、AES、IDEA等。(分组处理)

        1) (数据加密标准):56位密钥,64位分组。(56位二进制数,每位的取值是0或1,则所有的取值就是 个)

        2) :使用 两个秘钥 (共 112位 ),执行三次DES算法。(用1个密钥执行一次加密,再用另一个密钥执行一次解密,共执行三次)

        3) (高级加密算法):分组128位,密钥 128/192/256 位。

        4)IDEA:分组64位,密钥 128 位。

     流密码(挨个处理)

1. 非对称密钥 密码:加密密钥和解密密钥不同, ,其中一个用于加密,另一个用于解密。( 私钥 :持有人所有  公钥 :公开的)

2. 加密密钥可以公开,也称公开密钥加密。

3. 典型的公钥算法:

      Diffie-Hellman算法

      RSA算法

密码散列函数

1. 特性:

      定长输出;

      单向性(无法根据散列值逆推报文)

      抗碰撞性(无法找到具有相同散列值的两个报文)

2. 典型的散列函数

      MD5:128位散列值

      SHA-1:160位散列值

报文认证是使消息的接收者能够检验收到的消息是否是真实的认证方法。来源真实,未被篡改。

1. 报文摘要(数字指纹)

2. 报文认证方法

      简单报文验证:仅使用报文摘要,无法验证来源真实性

      报文认证码:使用共享认证密匙,但无法防止接收方篡改

身份认证、数据完整性、不可否认性

1. 简单数字签名:直接对报文签名

2. 签名报文摘要

1. 口令:会被窃听

2. 加密口令:可能遭受回放/重放攻击

    加密的口令可能会被截获,虽然不知道口令是什么,但他将加密口令提交给服务器,说这是我加密的口令,这叫重放.

3. 加密一次性随机数:可能遭受中间人攻击

Alice发给Bob说她是Alice,但Bob说你要向我证明,Bob生成一个随机数发给Alice,让Alice用自己的私钥进行加密,加密后再把数据发给Bob,然后Bob再向Alice要公钥进行解密解出来的随机数如果和Bob发给Alice的随机数一样的话,那就说明她是Alice。

这种方法会被中间人攻击,Alice发送的私钥加密被Trudy更换为自己用私钥加密的数据然后发给Bob,公钥也被Trudy换了,最后Bob用公钥加密数据发给Alice,Trudy截获了,用自己的私钥进行解密,获得了数据。

密钥分发存在漏洞:主要在密钥的分发和对公钥的认证环节,这需要密匙分发中心与证书认证机构解决

双方通信时需要协商一个密钥,然后进行加密,每次通信都要协商一个密钥,防止密钥被人截获后重复使用,所以密钥每次都要更换,这就涉及到密钥分发问题。

基于 KDC 的秘钥生成和分发

认证中心CA:将公钥与特定的实体绑定

1. 证实一个实体的真实身份;

2. 为实体颁发 数字证书 (实体身份和 公钥 绑定)。

防火墙 :能够隔离组织内部网络与公共互联网,允许某些分组通过,而阻止其它分组进入或离开内部网络的软件、硬件或者软硬件结合的一种设施。

前提 :从外部到内部和从内部到外部的所有流量都经过防火墙

1. 无状态分组过滤器

    基于特定规则对分组是通过还是丢弃进行决策,如使用 实现防火墙规则。

2. 有状态分组过滤器

    跟踪每个TCP连接建立、拆除,根据状态确定是否允许分组通过。

3. 应用网关

    鉴别 用户身份 或针对 授权用户 开放 特定服务 。

入侵检测系统(IDS):当观察到潜在的恶意流量时,能够产生警告的设备或系统。

1. 电子邮件安全需求

    1)机密性

    2)完整性

    3)身份认证性

    4)抗抵赖性

2. 安全电子邮件标准:

1. SSL是介于 和 之间的安全协议.

2. SSL协议栈

    (传统的TCP协议是没有安全协议的,传输都是明文,所以在TCP上面设置SSL协议保证安全性)

3. SSL握手过程

    协商密码组,生成秘钥,服务器/客户认证与鉴别。

1. VPN

    建立在 上的安全通道,实现远程用户、分支机构、业务伙伴等与机构总部网络的安全连接,从而构建针对特定组织机构的专用网络。

     关键技术 : ,如IPSec。

2. 典型的 网络层安全协议 ——

    提供机密性、身份鉴别、数据完整性和防重放攻击服务。

    体系结构: 认证头AH协议 、 封装安全载荷ESP协议 。

    运行模式: 传输模式 (AH传输模式、ESP传输模式)、 隧道模式 (AH隧道模式、ESP隧道模式)

本文主要介绍了网络安全基本概念、数据加密算法、消息完整性与数字签名、身份认证、密钥分发中心与证书认证机构、防火墙与入侵检测以及网络安全协议等内容。

回顾:

1. 网络安全基本属性

2. 典型数据加密算法;

3. 消息完整性、数字前面以及身份认证原理。

换位密码的举例

举例:周期为e的换位将明文字母划分。

换位密码就是一种早期的加密方法,与明文的字母保持相同,区别是顺序被打乱了。

古典密码:

从远古到1949年香农发表《保密系统的通信理论》,这期间人类所使用的密码均称为古典密码,本文主要介绍三种古典密码,分别为置换密码,代换密码和轮换密码。

置换密码(又称为换位密码):

是指明文中各字符的位置次序重新排列得到密文的一种密码体制。

特点:保持明=文中所有的字符不变,只是利用置换打乱明文字符的位置和次序。

置换定义:有限集X上的运算σ:X→X,σ是一个双射函数,那么称σ为一个置换。

即任意x∈X,存在唯一的x’∈X,使得σ(x)=x’。

解密的时候会用到逆置换σ’,即任意x’∈X,存在唯一的x∈X,使得σ’(x’)=x且满足σσ’=I。

对置换有了一个基本的认识之后我们来谈一下置换密码,置换密码有两种,一种为列置换密码,一种为周期置换密码。

列置换密码:

列置换密码,顾名思义,按列换位并且按列读出明文序列得到密文,具体加密步骤如下:

将明文p以固定分组长度m按行写出nxm阶矩阵(若不m倍数,空余部分空格补充)。

按(1,2,3…m)的置换σ交换列的位置,σ为密钥。

把新得到的矩阵按列的顺序依次读出得到密文c。

解密过程如下:

将密文c以固定的长度n按列写成nxm阶矩阵。

按逆矩阵σ’交换列的位置。

把矩阵按着行依次读出为明文。

周期置换:

周期变换密码是将明文P按固定长度m分组,然后对每组的字符串按置换σ重新排列位置从而得到密文。

周期排列与列排列思想是一致的,只不过列排列是以矩阵的形式整列换位置,而周期是在分组以后对每组分别变换。懂得列排列就可以很容易地理解周期排列。

代换密码(又称为替代密码):

就是讲明文中的每个字符替代成密文中的另一个字符,替代后的各个字母保持原来的位置,在对密文进行逆替换就可以恢复出明文。

代换密码有分为单表代换密码和多表代换密码。

单表代换密码我们分别介绍凯撒密码和仿射密码。

凯撒密码:

凯撒密码依据凯撒密码代换表对26个英文字母进行替换。

C语言题目:《破译密码》凯撒大帝的题目,c++,非常着急, 谢谢大家,急急急急急急急急急急急!!!

#include stdio.h

#include string.h

int main()

{

char str[201];//存放字符

char tmp[11];//临时变量

int i;//循环变量

int len;//存放消息长度

scanf("%s",tmp);//这里输入START,开始

getchar();//接收回车

while(strcmp(tmp,"ENDOFINPUT"))

{

gets(str);//由于输入中有空格,所以用gets输入

getchar();//接收回车

len = strlen(str);

for(i=0;ilen;i++)

{

if(str[i]='A'str[i]='Z')

{

str[i] -= 5 ;

if(str[i] 65)

{

str[i] +=26;

}

}

}

scanf("%s",tmp);//这里输入END,结束

printf("%s\n",str);//处理完就直接输出结果

scanf("%s",tmp);//输入START表示继续,输入ENDOFINPUT则表示最后一个数据集

getchar();//接收回车

}

return 0;

}

请问一下这道C语言编程题怎么做?

按照题目要求编写的用凯撒密码加密的C语言程序如下

#includestdio.h

int main(){

char s[80];

int offset,i;

fgets(s,80,stdin);

scanf("%d",offset);

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

if('A'=s[i] s[i]='Z')

if(offset=0)

  s[i]='A'+(s[i]-'A'+offset)%26;

else

  s[i]='A'+(s[i]-'A'+26+offset%26)%26;

else if('a'=s[i] s[i]='z')

if(offset=0)

  s[i]='a'+(s[i]-'a'+offset)%26;

else

  s[i]='a'+(s[i]-'a'+26+offset%26)%26;

}

printf("%s\n", s);

return 0;

}