加密学原理
加密学原理
一谈到加密,想必大部份人第一个想到的应该就是密码,而且很大一部份人应该都认为只要我的密码够复杂就一定安全。这种想法在大部份地方或时间都适用,但并不是绝对安全,其实安全不光要靠有复杂的密码,还很大程度上倚赖加密算法的完整性或安全性。下面就来聊聊加密学。
在计算机里,加密方法有很多,常见的加密算法有两大类,一类称为对称密码算法,另一种称为非对称**算法。对称**算法在目常使用中主要用到有DES,3DES,AES等,非对称**算法分为RSA,DH等。
先聊聊对称**算法:
1、DES(Data Encryption Standard)是美国国家标准和技术局(NIST)在1977年才有的数据加密标准,DES的思路是参照二战时期盟军缴获的德军恩格玛加密机。一个非常强悍的加密算法,使用非常广泛。DES**长度为56位,分组长度为64位。为了提高加密强度,后来又发展出三重DES加密,即3DES。DES加密本身是一个很好的加密码算法,本身没有什么漏洞,从推出至今,经历几十年时间仍无人**。因为计算机处理速度不断刷新,老牌的DES因为**长度过短,容易受到爆力**,因此才有了3DES。3DES可以认为是做了三次DES加密。
2、AES(Advanced Encryption Standard),高级加密标准,又称为Rijndael加密法,于1997年颁布,是美国联邦政府采用的一种区块加密标准。这个标准用来替代DES。2006年,高级加密标准已然成为对称**加密中最流行的算法之一。该算法为比利时密码学家Joan Daemen和Vincent Rijmen两人设计,结合两位作者的名字,以Rijndael命名。 AES算法使用128、192、256位**长度,加密强度比DES/3DES更强,而且,在实际应用中,AES支持软件和硬件加速,效率均非常高。
对称**算法的特点是使用相同的密码对数据进行加密和解密,速度快,加密后数据与原始数据大小相差不会太大。非常像解放前军事使用的电报,通讯双方使用相同的密码本进行加解密。缺点是**数量是以参加者数量平方的速度增长的,因为每一对通信加密的**都可能不一样,管理起来非常麻烦,而且对称**算法不支持数字签名。对称**算法非常不错,但是在实际的通讯中也有不少问题,比如,加密产生的密码应该如何安全地传递给接收方?让对方来拿?又或者通过快递?这些都不可取,因此,**传递成为大问题。
再来看看非对称**算法:
1、RSA(Rivest,Shamir,Adelman)是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。当时他们三人都在麻省理工学院工作。RSA就是他们三人姓氏开头字母拼在一起组成的。RSA被称为公共**加密系统,**长庋使用512-2048bit,**交换安全且迅速,是基于大素数因式分解的数学难题,对极大整数做因数分解,目前除了使用最短**长度加密的东西可能会受到爆力**以外还没有一个有效的攻击手段可以对RSA进行有效**,是一个非常安全的加密算法。目前广泛使用在HTTPS加密。
RSA提出者
2、DH(Diffie-Hellman)算法,在百度百科中是这么解释的,一种确保共享KEY安全穿越不安全网络的方法,我觉得也OK,该算法是1976年由Whitefield与Martin Hellman提出,称为Diffie-Hellman**交换协议/算法(Diffie-Hellman Key Exchange/Agreement Algorithm)。该算法只能够用于交换**,不能用于加密数据,是基于离散对数的数学难题,来看下它的难题:
对于上面这个式子,我觉得非常简单,上面除了有英文字母以外,还有大小写的英文字母………DH算法被应用在v*n的**交换。
非对称**算法在一个系统内会生成两种**,分别为公钥和私钥,用公钥加密的东西只能用对应的私钥来解密,同理,用私钥加密的东西只能用其公钥进行解密。每一个参加者进入加密系统都会得到这样的一对**。非对称**算法只能加密非常小的数据,一般用于加密对称**产生的**。它是一个非常安全的加密算法,解决了非对称**算法密码传递的问题。缺点是加密比较缓慢,密文比较长。
在实际应用中,都是两种加密算法结合的,用对称**算法对数据进行加密,产生的**使用非对称**算法来加密传输。
常见的解决方案:
1、 发送方将需要加密的数据利用对称**算法进行加密,得到加过密的密文与一个**。
2、 发送方用非对称**算法将**使用接收方提供的公钥进行加密,得到一个加过密的**。
3、 发送方将加过密的**与密文一起发送给接收方。
4、 接收方接收到数据后先拿出被加过密的**,用自己的私钥对其进行解密得到明文的**。
5、 再利用解密后的**对密文使用与发送方加密时使用的相同的对称**算法对其进行解密能够得到明文。
这样,就可以解决数据传输的安全问题了。