在开发中由于对于数据安全性的要求,会对数据进行加解密处理。通常使用的加密方式有数字摘要、对称加密和非对称加密等。
一、数字摘要
数字摘要是将任意长度的消息变成固定长度的短消息,它类似于一个自变量是消息的函数,也就是Hash函数。数字摘要就是采用单项Hash函数将需要加密的明文“摘要”成一串固定长度(128位)的密文这一串密文又称为数字指纹,它有固定的长度,而且不同的明文摘要成密文,其结果总是不同的,而同样的明文其摘要必定一致。来源:百度百科
基于以上特征数字摘要主要运用于信息一致性的校验,比较常用的数字摘要算法有MD5,SHA等。摘要算法主要是为防止信息的篡改,一个数字签名的工作原理图如下(来自百度百科):
对此图解释如下:
- 发方A将原文信息进行哈希运算,得一哈希值即数字摘要MD;
- 发方A用自己的私钥PVA,采用非对称RSA算法,对数字摘要MD进行加密,即得数字签名DS;
- 发方A用对称算法DES的对称密钥SK对原文信息、数字签名SD及发方A证书的公钥PBA采用对称算法加密,得加密信息E;
- 发方用收方B的公钥PBB,采用RSA算法对对称密钥SK加密,形成数字信封DE,就好像将对称密钥SK装到了一个用收方公钥加密的信封里;
- 发方A将加密信息E和数字信封DE一起发送给收方B;
- 收方B接受到数字信封DE后,首先用自己的私钥PVB解密数字信封,取出对称密钥SK;
- 收方B用对称密钥SK通过DES算法解密加密信息E,还原出原文信息、数字签名SD及发方A证书的公钥PBA;
- 收方B验证数字签名,先用发方A的公钥解密数字签名得数字摘要MD;
- 收方B同时将原文信息用同样的哈希运算,求得一个新的数字摘要MD’;
- 将两个数字摘要MD和MD’进行比较,验证原文是否被修改。如果二者相等,说明数据没有被篡改,是保密传输的,签名是真实的;否则拒绝该签名。
这样就可以保证敏感信息的在传输过程中不被篡改,保证了信息的安全性。
二、对称加密
对称加密也成为对称秘钥加密,可以使用同一秘钥对信息进行加解密处理。对称加密是使用比较早的加密算法,通过约定规则(加密秘钥)处理后变成密文发送出去,接受者根据规则(加密秘钥)来逆向进行解密,使其变为明文。
这里的秘钥就如同谍战片中的密码本。
对称加密算法中常用的算法有:DES、3DES、TDEA、AES等
优缺点:
优点:算法公开、计算量小、加密速度快、加密效率高
缺点:
1、交易双方都使用同样钥匙,安全性得不到保证。
2、每对用户每次使用对称加密算法时,都需要使用其他人不知道的惟一钥匙,这会使得发收信双方所拥有的钥匙数量呈几何级数增长,密钥管理成为用户的负担。对称加密算法在分布式网络系统上使用较为困难,主要是因为密钥管理困难,使用成本较高。
三、非对称加密
非对称加密解密与解密是使用不同的秘钥,因此需要两个秘钥:公开秘钥和私有秘钥。可以使用公钥与私钥进行相互加解密,即用公开密钥对数据进行加密,用对应的私有密钥才能解密;用私有密钥对数据进行加密,那么用对应的公开密钥才能解密。常用的加密算法是RSA等。
非对称加解密原理
- A要向B发送信息,A和B都要产生一对用于非对称加密算法和解密的公钥和私钥。
- A的私钥保密,A的公钥告诉B;B的私钥保密,B的公钥告诉A。
- A要给B发送信息时,A用B的公钥加密信息,因为A知道B的公钥。
- A将这个消息发给B(已经用B的公钥加密消息)。
- B收到这个消息后,B用自己的私钥解密A的消息。其他所有收到这个报文的人都无法解密,因为只有B才有B的私钥。
非对称加解密保密性比较好,不需要交换秘钥,但是算法强度复杂 ,加解密耗时,适合对少量数据进行加密。