对称加密算法和非对称加密算法

Posted 爱科技爱软件

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对称加密算法和非对称加密算法相关的知识,希望对你有一定的参考价值。

对称加密算

对称加密算法是加密和解密时使用相同的密钥,主要用于保证数据的机密性。最具有代表性的算法是20世纪70年代IBM公司提出的DES(dataencryption standard算法;在此基础上又提出了许多DES的改进算法,如三重DESriple DES)、随机化DES(RDS)、IDEA(internationaldataencryptionalgorithm)、广义DES(generalizedDES)、NewDES、Blowfish、FEAL以及RC5等。2001年美国国家标准与技术研究院发布高级加密标准(advancedencryption standard,AES)取代了DES,成为对称密钥加密中最流行的算法之一。

对称加密算法的优点是计算开销小、加密速度快,适用于少量或海量数据的加密,是目前用于信息加密的主要算法。

其缺点是通信双方使用相同的密钥,很难确保双方密钥的安全性;密钥数据量增长时,密钥管理会给用户带来负担;此外,它仅适用于对数据进行加解密处理,提供数据的机密性,它不适合在分布式网络系统中使用,密钥管理困难,且成本较高。

非对称加密算法

非对称加密算法也叫公开密钥算法,其加密和解密是相对独立的,使用不同的密钥。它主要用于身份认证、数字签名等信息交换领域。公钥密码体制的算法中最著名的代表是RSA,此外还有背包密码、DSA,McEliece密码、Diffe_Hellman、Rabin、零知识证明、椭圆曲线、EIGamal算法等。非对称加密算法的优点是可以适应网络的开放性要求,且密钥管理问题也较为简单,可方便地实现数字签名和验证。其缺点是算法复杂、加密数据的速率较低。然而,无论是对称加密算法还是非对称加密算法都存在密钥泄露的风险。因此,Rivest在1989年开发出MD2算法,不需要密钥,引发了杂凑算法(也称Hash函数)的研究,即把任意长的输入消息字符串变化成固定长的输出串,不需要密钥,且过程是单向的,不可逆的。比较流行的算法有MD5,sha-1,RIPEMD以及Haval等。杂凑算法不存在密钥保管和分发问题,非常适合在分布式网络系统上使用,但因加密计算复杂,通常只在数据量有限的情形下使用,如广泛应用在注册系统中的口令密、软件使用期限加密等。数据加密技术能保证最终数据的准确性和安全性,但计算开销比较大,加密并不能防止数据流向外部,因此,加密自身不能完全解决保护数据隐私的问题。数据加密算法作为隐私保护的一项关键技术,大数据时代研究重点将集中在对已有算法的完善;综合使用对称加密算法和非对称加密算法。随着新技术的出现会研究出符合新技术发展的新加密算法。

对称加密和非对称加密都有分国际算法和国密算法。

非对称加密:RSA(国际算法),SM2(国密算法)

对称加密:DES(国际算法), SM4(国密算法)

以RSA加密过程为例

RSA的公钥、私钥的组成,以及加密、解密的公式可见于下表:

 

素数是这样的整数,它除了能表示为它自己和1的乘积以外,不能表示为任何其它两个整数的乘积。

公约数只有1的两个数,叫做互质数。

让m去被n整除,只取所得的余数作为结果,就叫做模运算。
步骤例如:

(1)设计公私密钥(e,n)和(d,n)。

令p=3,q=11,得出n=p×q=3×11=33;f(n)=(p-1)(q-1)=2×10=20;取e=3,(3与20互质)则e×d≡1 modf(n),即3×d≡1 mod 20。

d怎样取值呢?可以用试算的办法来寻找。试算结果见

 

对称加密算法和非对称加密算法

通过试算我们找到,当d=7时,e×d≡1 mod f(n)同余等式成立。因此,可令d=7。从而我们可以设计出一对公私密钥,加密密钥(公钥)为:KU=(e,n)=(3,33),解密密钥(私钥)为:KR =(d,n)=(7,33)。

(2)英文数字化。

将明文信息数字化,并将每块两个数字分组。假定明文英文字母编码表为按字母顺序排列数值,如表示

  则得到分组后的key的明文信息为:11,05,25。

(3)明文加密 

  用户加密密钥(3,33)将数字化明文分组信息加密成密文。由C≡Me(mod n)因此,得到相应的密文信息为:11,31,16。

(4)密文解密。

  用户B收到密文,若将其解密,只需要计算,即:


用户B得到明文信息为:11,05,25。根据上面的编码表将其转换为英文,我们又得到了恢复后的原文“key”。 

RSA的缺点:

1.产生密钥很麻烦,受到素数产生技术的限制,因而难以做到一次一密。

2.分组长度太大,为保证安全性,n 至少也要 600 bits 以上,使运算代价很高,尤其是速度较慢,较对称密码算法慢几个数量级;且随着大数分解技术的发展,这个长度还在增加,不利于数据格式的标准化。因此,使用RSA只能加密少量数据,大量的数据加密还要靠对称密码算法。


以上是关于对称加密算法和非对称加密算法的主要内容,如果未能解决你的问题,请参考以下文章

对称加密算法和非对称加密算法

对称加密和非对称加密的区别

几种加密算法的测试,包括对称加密和非对称加密

Python学习————对称加密和非对称加密

对称加密和非对称加密的区别

非对称加密算法-RSA算法