我们知道网络中的数据如果是明文进行传输的话,在经过交换机、路由器等节点时可能会被不法者监听和篡改,从而带来一些风险或损失,所以通常我们需要对数据进行加密处理后再进行传输,以确保数据的安全性。加密是对明文数据按某种特殊的算法进行加工处理,使其成为不可被直接读取的数据,即密文数据,而密文数据可以通过特定的秘钥解密后还原出明文数据。加密方式主要有对称加密、非对称加密和单向加密。
对称加密
对称加密是应用较早的加密算法,技术成熟,是一种传统也是最常用的加密手段,适用于绝大多数需要加密的场合。所谓对称加密是指加密和解密使用的密钥是同一个密钥。在对称加密算法中,数据发送方将明文和加密密钥一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去,接收方收到密文后,若想解读原文,则需要使用加密使用过的密钥及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文。
对称加密的特点是算法公开、计算量小、加密速度快、加密效率高,适合对大量数据进行加密。不足之处是,交易双方都使用同样的钥匙,安全性得不到保证。常用的对称加密算法有:
1.DES
DES(Data Encryption Standard)是一种将64比特的明文加密成64比特的密文的对称密码算法,它的密钥长度是56比特。尽管从规格上来说,DES的密钥长度是64比特,但由于每隔7比特会设置一个用于错误检查的比特,因此实质上其密钥长度是56比特。
2.三重DES
三重DES(Triple-DES,3DES)是为了增加DES的强度,将DES重复3次所得到的一种密码算法。明文经过三次DES处理才能变成最后的密,但是3DES并不是进行三次DES加密(加密–>加密–>加密,密钥长度为56×3=168比特),而是加密–>解密–>加密的过程。第一层和第三层中使用相同的密钥,产生一个有效长度为112位的密钥,其算法的步骤如下:
(1)用密钥K1进行DES加密。
(2)用K2对步骤(1)的结果进行DES解密。
(3)对步骤(2)的结果使用密钥K1进行DES加密。
这种方法的缺点时要花费原来三倍的时间,但从另一方面来看,三重DES的112位密钥长度是很强壮的加密方式。
. IDEA
IDEA(International Data Encryption Algorithm)算法使用128位的密钥,把明文分成64位的块,进行8轮迭代加密,得到64位密文。
.AES
AES(Advanced Encryption Standard)是取代其前任标准DES而成为新标准的一种对称密码算法,AES支持128、192和256位3种密钥长度。
.RC4
RC4(Rivest Cipher 4)是一种流加密算法,密钥长度可变。RC4的实现是以字节流的方式依次加密明文中的每一个字节,解密的时候也是依次对密文中的每个字节解密。
非对称加密
非对称加密也称公钥加密,加密所用的密钥和解密所用的密钥是不相同的,通常有两个密钥,分别为“公钥”和“私钥”,其中公钥对外公布,私钥只有持有人知道。用公钥加密的信息必须用私钥才能打开,反之,用私钥加密的信息必须用公钥才能打开。
非对称加密技术通常用在信息安全传输,数字签名等场合。RSA是典型的非对称加密算法,其过程大致如下:
(1)随机选择两个不相同的素数 p和q;
(2)将p,q相乘,记为n=p×q;
(3)计算n的欧拉函数z=(p−1)(q−1);
(4)随机选择一个整数e,满足两个条件: 1<e<z并且z与e互为质数;
(5)计算e对于z的模反元素d ,也就是说找到一个 d满足ed=1 modz。
(6)最终把(e,n)封装成公钥,加密时计算C=P^e(modn);将(d,n)封装成私钥,解密时计算P=C^d(modn)。
我们通过一个例子来说明:
在RSA加密体制中,已知素数p = 7, q = 11, 公钥e = 13, 试计算私钥d并给出对明文m = 5的加密,求其密文,已知密文c = 15,求其明文。
解:n=p×q=7×11=77,z=(p−1)(q−1)=(7−1)(11−1)=60,依据ed=1 modz,即13d=1mod60,得到私钥d=37。公钥(e,n)=(13,77),密文C=P^e(modn)=5^13mod77=26;私钥(d,n)=(37,77),明文C^d(modn)=15^37mod77=71。
单向加密
单向散列加密算法常用于提取数据,验证数据的完整性。发送者将明文通过单向加密算法加密生成固定长度的密文串,然后将明文和密文串传递给接收方。接收方在收到报文后,将明文使用相同的单向加密算法进行加密,得出加密后的密文串。随后与发送者发送过来的密文串进行对比,若发送前和发送后的密文串相一致,则说明传输过程中数据没有损坏;若不一致,说明传输过程中数据丢失了。
通俗来说,单向加密就是通过对数据进行摘要计算生成密文,密文不可逆推还原。算法代表有:MD5、SHA、HMAC等。
1.MD5
消息摘要算法MD5,无论是多长的输入,MD5都会输出长度为128bits的摘要 (通常用16进制表示为32个字符)。需要注意的是摘要算法是不可以逆的。通过加密后的数据是不能得到原始数据的。
2.SHA-1
安全散列算法(Secure Hash Algorithm,SHA),和MD5一样,也是摘要算法,但是SHA1的安全性更强,同时还有SHA256,SHA512等,区别就是长度不一样,越长越安全但是速度越来越慢。对于长度小于2 ^ 64 位的消息,SHA1会产生一个160位的消息摘要。
.HMAC
散列式报文认证码(Hash-based Message Authentication Code,HMAC),利用公开函数和密钥产生一个固定长度的值作为认证标识,即MAC,用这个标识鉴别消息的完整性,并将其加入到消息中,然后进行传输,接收方利用与发送方共享的密钥进行鉴别认证等。