磨链输出计划
密码经常能够听到,密码学应用也极为广泛,简述密码学发展的三个阶段:
古典密码学:古典密码学诞生至少有两三千年的历史了,这个阶段核心思想为:置换(permutation),说起古典密码最经典的两个例子:
斯巴达人的塞塔式密码:把一个长条羊皮螺旋地斜着绕在一个多棱棒上,然后水平方向从左到右写字,写一个字绕一圈。这长条羊皮拿下来看上去杂乱无章的,但是加上同尺寸的多棱棒就能看到准确的信息了。 在古代中国,藏头诗,藏尾诗早就被那些文人墨客玩坏了,如水浒传中,拉卢员外下水的那首卦歌:芦花丛中一扁舟,俊杰俄从此地游。义士若能知此理,反躬难逃可无忧。之后又出现了一种古老的对称加密算法,凯撒算法,这类算法的基本实现原理是通过把字母移动一定的位数来实现加密和解密。明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文,这种加密方式一旦掌握足够密文可以通过逆推的方式得到加密规则,但在当时这种理念还是很先进的。电影达芬奇密码中使用的密码道具。 古典密码学针对字符,对字符本身不做修改,通过位置的改变或者替换来隐藏信息,这种加密方式比较简单,主要通过工作或者机械的操作来加解密,一旦掌握了解密工具或者找到解密规律,信息马上就被破解了,整体安全性不高。
现代密码学:1948年10月香农Shannon(信息论之父)的信息论诞生,信息论将信息的传递作为一种统计现象来考虑,香农给出了信息熵的定义:香农信息论,论文《A Mathematical Theory of Communication》(通信的数学理论)链接:http://vdisk.weibo.com/s/aGbbFyM3Q12eh
同时这也标志着密码学进入了第二阶段,现代计算机科学和信息技术的发展,之前对复杂计算的密码可以通过计算机来完成,密码学成为了一门科学。加密算法一般通过密钥来加解密,信息通过密钥加密后明文通过二进制的方式传播,一般的理解,你的密钥越长就越难破解,但是这个时候你会发现你的密钥只有一把,而且别人要解密你的信息,你必须把密钥也给对方,这种方式称为“对称加密算法”,你的密钥很关键,怎么保存,怎么传输就会很头疼。当然后来演变出来的哈希算法、公钥密码学、其实都是以现代密码学为基础。对称密钥原理图:
公钥密码学:1976年后,公钥密码学出现,这个也可以称为非对称加密,和之前的对称加密最大的区别就是,加解密分别使用公钥(publickey)和私钥(privatekey),密钥以一对的方式出现。196年W.Diffie和M.Hellman发表的New Direction in Cryptography,提出了非对称密码体制的概念。非对称密码体制一般依据两类类数学问题:大整数分解问题和离散对数问题。公钥密码学原理图:
加密算法概述
数据加密:数据加密的基本过程就是对原来为明文的文件或数据按某种算法进行处理,使其成为不可读的一段代码,通常称为“密文”,使其只能在输入相应的密钥之后才能显示出本来内容,通过这样的途径来达到保护数据不被非法人窃取、阅读的目的。该过程的逆过程为解密,即将该编码信息转化为其原来数据的过程。
那么根据数据加密的定义,我们会发现数据加密是需要一个解密过程中,那么有些算法在加密后变成密文,但是无法逆推的那种就不能被真正定义为加密算法。
解释下MD5的特点,MD5(MessageDigest Algorithm MD5),消息摘要算法第五版,这个消息摘要算法之前在讲数字签名时候也有涉及。MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。那么在计算开始就对信息进行了填充,并且压缩,最简单的例子,你在网络上下载东西是通过MD5验证,那么下载源何其多,但是MD5是128位,你可以计算MD5值的总数,无限对有限,这就是一个不可逆的过程,所以严格来说MD5就是一种算法而不是加密算法。