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