加密算法你了解多少

Posted on

加密算法你了解多少

(转自:http://www.hackhp.com/post-730.html hackhp)

加密算法: 当不同的远程网络通过Internet连接时,网络之间直接通过私有地址进行互访只是需求之一,除此之外,还有个非常重要的需求,那就是数据安全。 所以在穿越Internet的远程之间只实现隧道传输还不够,还必须让数据包加密传输,以保证数据在Internet传输时的安全性。 基于上述原因,在远程网络之间布置VPN除了实现隧道功能之外,还必须在隧道中实现对数据的加密,隧道与加密是VPN不得不同时实现的功能,两者缺一不可,否则就不算是完整的VPN。

目前,加密算法多种多样,加密算法分加密和解密两个过程。 加密是指将明文(直接可以看的懂的)数据换算成密文(无法直接看懂的)数据。 加密算法非常多,曾经最古老,最常用,也是最让人理解的就是替换法

例如: 发送一串文字ABCDEF,要将这些文字变为密文,就将A替换为C,将B替换为D,将C替换为E,将D替换为F,将E替换为G,将F替换为H,最后ABCDEF就使用CDEFGH,而ABCDEF才是明文,是真正的内容,而CDEFGH就是加密后的密文,并不是真正的内容,从加密过程可以看出,明文“ABCDEF”通过将每个字母替换成后面第二个字母的方法被加密城了“CDEFGH”,在这里,将每个字母替换成后面第二个字母的方法可以称为加密方法,也成为加密算法,当内容被加密之后,接收者还必须先将密文解密,才能看懂内容,这里就将密文“CDEFGH”的每个字母替换成前面第二个字母,便得到明文“ABCDEF”。

从上面加密与解密的整个过程中可以发现,对数据进行加密需要使用加密算法,上例中使用的加密算法就是字母替换发,即将每个字母替换成其他字母的方法,知道数据使用什么算法去解密并没关系,

一个人知道数据的加密算法,并不能将密文转变为明文,要对密文进行解密,不仅要知道加密算法,同时还必须知道加密的密钥,也就是密码,在上例中,将每个字谜替换成后面第二个字母就是密钥(密码),如果别人只是知道我们使用的加密算法是字母替换发,但他不知道每个字母具体被替换成了哪个字母,是没办法将密文还原的,所以对数据加密的算法可以被公开,但是机密的密钥一定要保密不能被窃取,否则密文也就变得不安全了,因此,如何保证密钥的安全是相当重要的。

在对称加密算法中,因为解密时使用的密钥与加密时使用是同一个密钥,所以对密钥的保护必须格外的小心,只要密钥在交换或协商时被人窃取,数据就会被破解,显然双方必须使用绝对的方法来交换密钥。

而在非对称加密算法中,因为解密时使用的密钥和加密时使用的密钥不同,任何拥有弓腰的人,都可以对数据进行加密,但只有拥有私钥的人,才能对密文解密,所以公钥可以被公开,可以被任何人知道,只知道公钥只能加密,却不能解密,所以只要保证私钥掌握在自己手中不传递不外泄,就不会有问题;双方在需要加密传输时,各自都把公钥发出去,让对方通过该公钥将数据加密后发给自己,这样就能使任何人都能向自己发送加密数据,但只有自己才能对数据解密。

对称加密算法(私钥算法)

DES(Data Encryption Standard) DES加密共有三种形式,分为DWS(40-bit长度加密),DES(56-bit长度加密)以及3DES(3倍的56-bit长度加密,即168-bit长度加密);由于3DES加密长度够长,安全性够高,所以推荐使用3DES。

AES(Advanced Encryption Standard) AES加密共有三种形式,分为AES 128 (128-bit长度加密),AES 192 (192-bit长度加密)以及AES 256 (256-bit长度加密);由于AES 256加密长度够长,安全性够高,所以推荐使用AES 256。

非对称加密算法(公钥算法)

RSA RSA公钥加密算法的名字是发明者的人名:Rivest,Shamir and Adleman,该算法的长度位数不定,由人手工定义。

在硬件方面,当采用公钥加密算法时,速度明显慢于私钥加密算法,虽然使用公钥加密算法似乎更安全,但通常都使用私钥加密算法,而使用私钥加密算法的终点就是要保证密钥的安全传递与交换,所以该工作就由公钥加密算法来完成,最后的过程就是先使用公钥加密算法安全的交换私钥算法的密钥后,然后再使用私钥算法对数据进行加密,这样即保证了私钥算法的密钥安全,同时又获得了数据加密的速度,两者兼得。

HMAC(Hashed Message Authentication Code) 当数据在传输过程,如果被劫持后修改了数据,通常数据接受者很难发现数据是否在途中被篡改;在正常的数据传输中大家应该知道,每个数据包都会在后面写上一个数据计算后的校验和(Checksum),当数据计算出校验和之后,接受者在收到数据后也需要对数据进行校验和计算,如果发现自己计算的校验和与数据包附带的校验和不同,便认为数据发生了偏移和错误,因此将数据包丢弃和要求重传,在需要保证数据安全中途被篡改时,也引用了校验和的思想,数据在发送之前先计算出相应的Hash值,当接收者收到数据后也要对数据计算Hash值,如果发现自己计算的Hash值与数据附带的值不匹配,便认为数据在传输过程中遭到了篡改,从而拒绝不正确的数据包。

在这里,Hash算法和校验和算法基本上是相同的,Hash算法的特征在于任何大小的数据计算出的Hash值的长度都是一样的,任何数据通过Hash计算后,得到的Hash值都是固定长度的,哪怕几个字的数据,或者是几GByte的数据,计算出的Hash值的长度都是相同的,所以如果仅仅是根据Hash值,是无法推算出数据内容的,只靠Hash值无法想数据内容还原。基于以上Hash的特征,所以Hash多用于认证,认证对等双方相互认证时,只需要交换密码的Hash值即可,而无须交换密码,从而防止了密码被窃取,但仅仅是窃取Hash值,也无法推算出密码是多少。

MD5(Message Digest 5) 将任何数据通过计算后输出128-bit长度的Hash值。

SHA-1(Secure Hash Algorithm 1) 160-bit digest 将任何数据通过计算后输出160-bit长度的Hash值。 来源: [http://www.hackhp.com/post-730.html](http://www.hackhp.com/post-730.html)

希望本站内容对您有点用处,有什么疑问或建议请在后面留言评论
转载请注明作者(RobinChia)和出处 It so life ,请勿用于任何商业用途