密码技术(2)发展

上一篇中介绍了密码学最开始比较有名的古典密码算法,后来我又有兴趣拜读了一些其他大神的文章,还有很多种古典密码算法,我就不再一一介绍了,代价感兴趣可以搜索一下古典密码,就可以看到大神们的文章。

这一篇我主要复习一下异或运算(XOR)、一次性密码本,和对称密钥DES。

这里还要提一句,由于现代密码算法的复杂性,所以现代密码算法都是依托于计算机的强大计算能力,因为计算机处理的都是比特序列,所以我们密码算法操作的对象也都是比特序列。

异或运算(XOR)

异或运算在对称加密中是一种很普遍的运算算法,上一篇中我也说过DES对称加密的解密方式和加密方式的运算方式是一样的,原因就是因为DES中的异或操作,

0 XOR 0 = 0;

0 XOR 1 = 1;

1 XOR 0 = 1;

1 XOR 1 = 0;

这是大家都知道的异或运算方法,就是如果两个一样就为0,如果两个不一样就是1,

例如: 英文字母 g的ASCLL码为 01100111;

然后我们乱写一个同长度的比特序列 00101010;

                     然后我们用 01100111 XOR 00101010 = 01001101;

                     然后我们记下刚刚乱写的比特序列 00101010;

                     之后我们将 00101010 XOR 01001101 = 01100111;(g的ASCLL序列);

所以对同一个数据XOR两次就会得到相同的结果;

一次性密码本

之后又有人提出一个根据异或来的加密算法,也就是要说的一次性密码本,这个一次性密码本的核心算法就是XOR。

它将明文转化为ASCLL然后对一串等长的比特序列进行XOR,之后得到密文的比特序列,密文的比特序列会被计算机当成二进制数据来处理,而在对密文使用密钥再次异或一次后就会得到原文。

 

一次性密码本的最重要的一点并不是这些,而是它是一种无法被破解的算法,即使计算能力无穷大的计算机可以遍历所有的密钥空间,也是无法被破解的,因为得到的结果是我们不知道究竟哪个才是真的明文,例如我们遍历g的ASCLL编码的密钥空间可能得到的结果有 a、b、c等等26个英文字母,也有乱码等等,我们暂且排除所有乱码,得到26个英文字母,除了g以外,其余的25个都是合理干扰项,我们无法判断哪个才是真正的原文,所以一次性密码本是无法被破解的,因为遍历了所有的密码空间,我们也无法筛选哪个才是真正的原文。

之前我在刚刚接触开发中也想过这个问题,那我们为什么不就用XOR来处理所有的原文呢?

这个就和密钥的配送问题有关了,一次性密码本的操作是生成一个与原文比特序列等长的随机比特序列(密钥),和原文数据进行XOR得到密文,所以密钥就变的十分重要,如果我们将密文发出,密钥的配送和保存工作就会是重中之重,但是密钥和原文的长度相同,我们如果有非常严密的保存配送方法,为什么不直接配送、保存原文呢?所以一次性密码本并没有解决我们的真正需求,但是它的存在为我们后来的现代密码学打下了基础。

由于一次性密码本的无法被破解性,所以很多的加密算法中都有它的存在,但是都是作为配套使用的方式进行参与运算,我们接下来要说的DES对称加密中就有它的参与。

DES对称密钥是一种将64位比特原文对应加密称64位比特密文的一种对称加密技术,DES的密钥长度规格为64位,但实际上每隔7比特就会有一位用来错误检查的比特,所以DES密钥的真实长度是56比特,这一段是我摘抄《图解密码技术》书中对与DES对称加密算法密钥长度的解释。

DES对称加密的结构其实是Feistel结构,Feistel结构我们可以把它抽象的想象为拉链,拉链的左右两个齿咬合在一起就完成了一个拉链齿的闭合,而Feistel结构也是这样子的,对一段64位数据进行加密时,首先将数据原文分为两短32为长度的比特序列,左侧和右侧都为原文,之后将右侧的32为原文同密钥进行函数运算,将运算结果与左侧的原文进行XOR,得到左侧的密文,而右侧原文则作为下一轮左侧的原文输入,但是需要注意一点就是,在原文密文互相交换的次数为n-1次,最后一次的时候左右是不会在进行左右交换的。

 

同样因为XOR的存在,解密时只需要将密文同样拆分进行同一轮计算,通过最后XOR就可以得到原文,就如同拉链上的拉头一样,它就可以简单的被我们看作Feistel结构的模型,而原文被拆分就可以看作拉链的两边,拉头重复的将拉链组合在一起,从而完成加密操作。

DES对称加密的解密模式也是同样的,由于左右交换的次数为n -1次,所以最后的密文64比特中,右侧32位的密文是未经过第n次加密的密文,而左侧的32位密文则是经过第n次与右侧32位密文第n次加密所生成的密文XOR过的密文,所以在解密时,我们只需要将右侧的32位密文加密再与左侧32位密文XOR就得到了当时第n- 1次的右侧密文,而原右侧32位密文就是第n-1次的左侧密文,以此类推同样运行的轮后,就可以得到原文数据。

DES的加密方式位后续的3DES对称加密方式打下了基础,但是DES加密方式已经不安全,所以不推荐使用,但是它的Feistel结构更值得学习。

我觉得还有很多DES对称加密的方法我没有说明白,我觉得还是要单独写一篇过于Feistel结构的博客,才能理解更深

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值