孙小缡 發表於 2012-6-28 15:31:06

关于加密解密你知道多少? 加密解密的方法详解

;小时候做过这样的事儿,写日记的时候为了只让自己看的懂,不让他人看的懂,就想了这样办法。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 日记内容:&nbsp;我想255许1989喜欢201。知道这是什么意思么?呵呵通过一个很幼稚简单的算法来实现的。26个英文字母表和汉语字母的对照,很无聊吧,不过当时感觉很神秘的(小孩的心思)。不管怎么说,这也算是知道什么是加密了,什么是解密了<br /><hr style="PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px" /><strong>一、加密、解密、算法之间的关系</strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />把一段原始数据通过某种算法处理成另一种数据(原始数据为明文,处理后的数据为密文)。明文-----&gt;密文 称之为加密;密文----&gt;明文 称之为解密;<br />&nbsp;<br /><img style="BORDER-BOTTOM-STYLE: none; PADDING-BOTTOM: 0px; BORDER-RIGHT-STYLE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP-STYLE: none; VERTICAL-ALIGN: top; BORDER-LEFT-STYLE: none; PADDING-TOP: 0px" border="0" alt="\" src="//img.jbzj.com/file_images/article/201206/2012062815314934.png" /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 所以对于加密、解密来讲算法本身非常关键。但是算法是公开的,一旦有些人想要破解这个算法,而且被破解了,则所有使用这个算法的产品的都要报废了,(例如我上面的小日记,就无处躲藏了<img style="BORDER-BOTTOM-STYLE: none; PADDING-BOTTOM: 0px; BORDER-RIGHT-STYLE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP-STYLE: none; VERTICAL-ALIGN: top; BORDER-LEFT-STYLE: none; PADDING-TOP: 0px" alt="\" src="//img.jbzj.com/file_images/article/201206/2012062815314935.gif" />),而且替换一个算法耗费的资本也是很大的,毕竟找一个合适的算法也不是一件简单的事。因此一个加密出来的数据本身可靠与否,取决于密钥,而不是算法,因为密码的调换成本很低的。<br /><hr style="PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px" /><strong>二、什么是密钥</strong><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 密钥是一种参数,它是在明文--&gt;密文或者密文--&gt;明文的算法中输入的数据。分为对称密钥、非对称密钥。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;对称密钥加密:又称私钥加密,即发送方和接收方用同一个密钥去加密和解密数据。优势是加密/解密速度快,适合于对大数据进行加密,但是密钥管理困难(因为要发送给不同的接受者,肯定不能使用同样的密钥吧,若是接受者多,记密钥就是一项艰巨的任务了)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;非对称密钥加密:又称公钥加密。需要使用不同的密钥来分别完成加密和解密操作。一个公开发布,即公钥;另一个由用户自己秘密保存,即私钥。发送方用对方的公钥加密数据,对方用自己的私钥解密。缺点在于加密/解密的速度比对称密钥慢得多。<br /><hr style="PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px" />&nbsp;<strong>三、加密算法</strong><br />对称加密算法 公钥加密算法 单向加密算法<br />1 对称加密算法:与上面介绍的对称密钥加密原理是一样的。<br /><img style="BORDER-BOTTOM-STYLE: none; PADDING-BOTTOM: 0px; BORDER-RIGHT-STYLE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP-STYLE: none; VERTICAL-ALIGN: top; BORDER-LEFT-STYLE: none; PADDING-TOP: 0px" border="0" alt="\" src="//img.jbzj.com/file_images/article/201206/2012062815314936.png" /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 从图中看到,发送方和接收方使用的是同一个密钥,但是想过没有,接收方如何获得密钥呢?打电话?发短信?还是写信?应该都不是吧,这样哪里还有安全性可言?(下面的公钥解密算法就可以解决这个问题)<br />2 公钥加密算法:与上面介绍的非对称密钥机密原理是一样的。<br /><img style="BORDER-BOTTOM-STYLE: none; PADDING-BOTTOM: 0px; BORDER-RIGHT-STYLE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP-STYLE: none; VERTICAL-ALIGN: top; BORDER-LEFT-STYLE: none; PADDING-TOP: 0px" border="0" alt="\" src="//img.jbzj.com/file_images/article/201206/2012062815314937.png" /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 从图中看到,发送发和接收方使用的不是同一个密钥,发送方使用接收方的公钥进行加密,接收方使用与之配对的私钥进行解密。整个传送过程中,加密后的数据只用接收方自己可以解密,因为只有他自己拥有私钥。上面也介绍过,此种加密的耗费时间长,并不是一个理想的加密方式。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 因此公钥解密算法有两个主要的功能:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1 实现密钥的交换,在对称加密算法中有这样一个问题,对方如何获得密钥,在这里就可以通过公钥算法来实现。即用公钥加密算法对密钥进行加密,再发送给对方就OK了<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2 数字签名。加密可以使用公钥/私钥,相对应的就是使用私钥/公钥解密。因此若是发送方使用自己的私钥进行加密,则必须用发送方公钥进行解密,这样就证明了发送方的真实性,起到了防抵赖的作用。<br />&nbsp;&nbsp;&nbsp;&nbsp;注意:公钥(public key)是从私钥(private key)中提取出来的<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 把对称加密和公钥加密糅合在一起,可以保证数据的机密性,来源的合法性。但是数据本身的完整性该如何解决呢?若是被非法截取,然后对数据乱改一通,破坏了数据的完整性,接收方又该如何判断呢?<br />3 单向加密算法<br />&nbsp;&nbsp;&nbsp;&nbsp; 准确来说,单向加密算法并不是一种加密技术,而是通过提取数据特征码,来验证数据的完整性。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 特征:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 雪崩效应:任何微小的改变都会产生巨大的不同,也就是数据只要有一点改变,结果就会大不相同<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 定长输出:不论数据是多大的,提取的特征码的长度都是一样的<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 上面的这三种算法,并不是独立的,应该说糅合到一起使用。最终保证数据的可靠性、完整性、机密性以及来源的合法性。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 接下来演示这个过程,小明----&gt;小美发送数据《爱的表白》呵呵<br /><img style="BORDER-BOTTOM-STYLE: none; PADDING-BOTTOM: 0px; BORDER-RIGHT-STYLE: none; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 594px; PADDING-RIGHT: 0px; BORDER-TOP-STYLE: none; HEIGHT: 199px; VERTICAL-ALIGN: top; BORDER-LEFT-STYLE: none; PADDING-TOP: 0px" border="0" alt="\" width="596" height="200" src="https://img.jbzj.com/file_images/article/201206/2012062815314938.png" /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<font color="#ff0000">小结:提取特征码是为了保证数据的完整性;用自己的私钥加密是为了身份验证;用对方的公钥加密保证了机密性,是有对方可以解密;</font><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 三种加密的基本算法到此就OK啦,我想应该说明白了 呵呵
頁: [1]
查看完整版本: 关于加密解密你知道多少? 加密解密的方法详解