密码主要用于军事,无论古今中外,概莫能外 。据《六韬》所载,3000年前由姜子牙发明了“阴符”,这就是最初的密码 。后被广泛运用于我国古代维护国家安全的军事活动和情报活动中 。
西方也同样如此,著名的凯撒密码(Caesar cipher),在公元前1世纪,就被用于高卢战争中,这是一种简单易行的单字母替代密码 。战前凯撒设计了一种对重要的军事信息进行加密的方法,即使这些信息被截获,敌方也不一定能看懂 。其实,凯撒密码字母移位的位数就是一种简单易行的单字母替代密码 。密码轮是利用凯撒密码来应用的,通过把字母移动一定的位数来实现加密和解密 。例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推 。
文章插图
现如今信息时代,加密技术更是无处不在,比如邮箱、网盘等,但是关于它的实现原理,如何实现,你又知道多少呢?由于之前一段时间在研究国密算法的JAVA实现,网上找了不少的资料,同时也学习了加密的原理和概念,自己整理了一下网上的资料和自己的理解 。这一块东西在日后的工作中是避不开的,多了解一下总有好处,而不是只会简单的调用encrypt和decrypt方法,知其然的同时也要知其所以然 。
在讲解国密之前,我们首先要来了解一下关于加密的一些基本的知识 。首先加密被分为两大类,也就是 单向加密和双向加密 , 双向加密又可被细分为对称加密和非对称加 密,这两种加密中又存在多种不同的模式 。
【单向加密】
单向加密可以简单的理解成为只能加密,没法解密,最典型的例子就是 散列算法 (Hash Function),也就是 摘要算法(杂凑算法)
。
这是一种从任意文件中创造小的数字「指纹」的方法 。与指纹一样,散列算法就是一种以较短的信息来保证文件唯一性的标志,这种标志与文件的每一个字节都相关,而且难以找到逆向规律 。因此,当原有文件发生改变时,其标志值也会发生改变,从而告诉文件使用者当前的文件已经不是你所需求的文件 。
这个过程是不可逆的,你摘要了一段东西就意味着你丢弃了原文,你无法用摘要去还原原文来,比如“我今天去二楼食堂吃了杂粮煎饼”,摘要出来是“我吃了煎饼”,你无法从后者去推断出原文 。但是你用同样的算法对同样的内容,计算出的结果是肯定一致的 。这只是个简单的例子,实际的摘要算法要更复杂,里面有自己的算法 。你不仅不可能根据一段通过散列算法得到的指纹来获得原有的文件,也不可能简单地创造一个文件并让它的指纹与一段目标指纹相一致 。
一个优秀的散列算法需要有以下几个特性:
文章插图
摘要算法的用途非常广,我们身边有很多不经意的地方都用到了这个东西,现在大部分的网络部署和版本控制工具都在使用散列算法来保证文件可靠性 。而另一方面,我们在进行文件系统同步、备份等工具时,使用散列算法来标志文件唯一性能帮助我们减少系统开销,这一点在很多云存储服务器中都有应用 。
现在的QQ、QQ邮箱、百度网盘之类的都有用到这一个技术,否则为什么我们传一个几个G的文件只需要几秒钟,因为根据文件计算出来的hash值,在服务器上找到了同样的文件,直接从服务器上拉取即可,不需要再上传 。所以网盘里的资源你再怎么改名字,藏的再深,都是没有用的,你改变不了散列值,大家分享来分享去,他们不需要点开来看你到底是什么视频内容,只要抓到一个,然后就把所有散列值一样的都给封掉,变成九秒教育短片 。
? 常用的散列算法
MD(Messge Digest)4:
由Rivest于1990年设计的单向散列函数,能够产生128比特的散列值 。现在它已经不安全了 。
MD(Messge Digest)5: 由Rivest于1991年设计的单向散列函数,能够产生128比特的散列值 。MD5的强抗碰撞性已经被攻破 。也就是说,现在已经能够产生具备相同散列值的两条不同的消息,因此它也不安全了 。
SHA-1、SHA-256、SHA-384、SHA512
SHA-1是由NIST(美国国家标准技术研究所)设计的一种能够产生160比特的散列值的单向散列函数 。现在已不推荐使用 。SHA-256、SHA-384、SHA512都是由NIST设计的单向散列函数,它们的散列值长度分别为256比特、384比特、和512比特 。这些单向散列函数合起来统称SHA-2 。目前SHA-1已经被攻破,2还是安全的 。
推荐阅读
- 刘姥姥抽柴火的故事 刘姥姥雪地抽柴暗示了什么
- 古墓派有哪两件厉害的独门暗器
- 脸色暗黄怎么调理 面容暗黄原因和调理方法
- 国色天香的秘方,6种名茶里暗藏的防病治病秘方
- 欧洲的中世纪被称为黑暗的中世纪 为什么中世纪欧洲被称为黑暗的中世纪
- 燕麦|皮肤很重要,而素颜状态绝对不能出油,一出油整个人就显得很暗淡
- 太阳日冕层 太阳日冕层的太阳活动
- 外星人就在你身边 外星人隐藏在人类中间
- 通俗的说,暗物质就是宇宙中 暗物质是指宇宙中
- 月球的另一面有没有外星人 外星人藏在月球背面是真的吗