总结DES、3DES、AES、SM加密算法
总结DES、3DES、AES、SM加密算法
DES加密算法
DES算法中的密匙为8个字节64位,但每8位位校验码位不参与运算,所以有效的密码只有56位;data为8个字节64 位,是要被加密或解密的数据;DES采⽤16轮运算,每轮产⽣⼀个轮密匙参与到运算中。
DES算法过程,整体可分成三个模块,这三个模块,并不是相互独⽴,⽽是相互杂糅在⼀起。但是密钥的⽣成并不需要外在条件,因此⾸先实现16个字密钥的⽣成。在对明⽂加密过程中,有⼀个16轮迭代加密,⽽每论迭代加密都需要经过⼏个相同的函数使得明⽂与密⽂相结合,以及明⽂的发散混淆处理。所以把相同处理函数抽取出啦,形成⼀个新的模块f。
算法描述
1.输⼊64位明⽂数据,并进⾏初始置换IP。
2.在初始置换IP后,明⽂数据再被分为左右两部分,每部分32位,以L0,R0表⽰。
3.在秘钥的控制下,经过16轮运算(f)。
4.16轮后,左、右两部分交换,并连接再⼀起,再进⾏逆置换。
5.输出64位密⽂。
3DES 加密算法
DES是⼀个经典的对称加密算法,但也缺陷明显,即56位的密钥安全性不⾜,已被证实可以在短时间内破解。为解决此问题,出现了
3DES,也称Triple DES,3DES为DES向AES过渡的加密算法,它使⽤3条56位的密钥对数据进⾏三次加密。
3DES,也称为 3DESede 或 TripleDES,是三重数据加密算法,相当于是对每个数据库应⽤三次DES的
对称加密算法。
由于DES密码长度容易被暴⼒破解,所以3DES算法通过对DES算法进⾏改进,增加DES的密钥长度来避免类似的攻击,针对每个数据块进⾏三次DES加密;因此,3DES加密算法并⾮什么新的加密算法,是DES的⼀个更安全的变形,它以DES为基本模块,通过组合分组⽅法设计出分组加密算法。
3DES是DES向AES过渡的加密算法,它使⽤2个或者3个56位的密钥对数据进⾏三次加密。相⽐DES,3DES因密钥长度变长,安全性有所提⾼,但其处理速度不⾼。因此⼜出现了AES加密算法,AES较于3DES速度更快、安全性更⾼。
加密
为了兼容普通的DES,3DES并没有直接使⽤ 加密->加密->加密 的⽅式,⽽是采⽤了加密->解密->加密 的⽅式。
当三重密钥均相同时,前两步相互抵消,相当于仅实现了⼀次加密,因此可实现对普通DES加密算法的兼容。
解密
3DES解密过程,与加密过程相反,即逆序使⽤密钥。是以密钥3、密钥2、密钥1的顺序执⾏ 解密->加密->解密。
AES加密算法
相⽐DES,3DES因密钥长度变长,安全性有所提⾼,但其处理速度不⾼。因此⼜出现了AES加密算法,AES较于3DES速度更快、安全性更⾼。
下⾯简单介绍下各个部分的作⽤与意义:
明⽂P
没有经过加密的数据。
密钥K
⽤来加密明⽂的密码,在对称加密算法中,加密与解密的密钥是相同的。
密钥为接收⽅与发送⽅协商产⽣,但不可以直接在⽹络上传输,否则会导致密钥泄漏,
通常是通过⾮对称加密算法加密密钥,然后再通过⽹络传输给对⽅,
或者直接⾯对⾯商量密钥。密钥是绝对不可以泄漏的,
否则会被攻击者还原密⽂,窃取机密数据。
AES加密函数
设AES加密函数为E,则 C = E(K, P),其中P为明⽂,K为密钥,C为密⽂。
也就是说,把明⽂P和密钥K作为加密函数的参数输⼊,则加密函数E会输出密⽂C。
密⽂C
经加密函数处理后的数据
AES解密函数
设AES解密函数为D,则 P = D(K, C),其中C为密⽂,K为密钥,P为明⽂。
也就是说,把密⽂C和密钥K作为解密函数的参数输⼊,则解密函数会输出明⽂P。
在这⾥简单介绍下对称加密算法与⾮对称加密算法的区别。
对称加密算法
加密和解密⽤到的密钥是相同的,这种加密⽅式加密速度⾮常快,
适合经常发送数据的场合。缺点是密钥的传输⽐较⿇烦。
⾮对称加密算法
加密和解密⽤的密钥是不同的,这种加密⽅式是⽤数学上的难解问题构造的,
通常加密解密的速度⽐较慢,适合偶尔发送数据的场合。
优点是密钥传输⽅便。常见的⾮对称加密算法为RSA、ECC和EIGamal。
AES的基本结构
AES为分组密码,分组密码也就是把明⽂分成⼀组⼀组的,每组长度相等,每次加密⼀组数据,直到加密完整个明⽂。在AES标准规范中,分组长度只能是128位,也就是说,每个分组为16个字节(每个字节8位)。密钥的长度可以使⽤128位、192位或256位。密钥的长度不同,推荐加密轮数也不同,如下表所⽰:
AES密钥长度(32位⽐特字)分组长度(32位⽐特字)加密轮数AES-1284410
AES-1926412
AES-2568414
这⾥实现的是AES-128,也就是密钥的长度为128位,加密轮数为10轮。
上⾯说到,AES的加密公式为C = E(K,P),在加密函数E中,会执⾏⼀个轮函数,并且执⾏10次这个轮函数,这个轮函数的前9次执⾏的操作是⼀样的,只有第10次有所不同。也就是说,⼀个明⽂分组会被加密10轮。AES的核⼼就是实现⼀轮中的所有操作。
SM算法
国产国密算法有很多种,其中SM1、SM4、SM7、祖冲之密码(ZUC)是对称算法;SM2、SM9是⾮对称算法;SM3是哈希算法。
1 SM1对称密码
SM1 算法是分组密码算法,分组长度为128位,密钥长度都为 128 ⽐特,算法安全保密强度及相关软硬件实现性能与 AES 相当,算法不公开,仅以IP核的形式存在于芯⽚中。
采⽤该算法已经研制了系列芯⽚、智能IC卡、智能密码钥匙、加密卡、加密机等安全产品,⼴泛应⽤于电⼦政务、电⼦商务及国民经济的各个应⽤领域(包括国家政务通、警务通等重要领域)。
2 SM2椭圆曲线公钥密码算法
SM2算法就是ECC椭圆曲线密码机制,但在签名、密钥交换⽅⾯不同于ECDSA、ECDH等国际标准,⽽是采取了更为安全的机制。另
外,SM2推荐了⼀条256位的曲线作为标准曲线。
SM2标准包括总则,数字签名算法,密钥交换协议,公钥加密算法四个部分,并在每个部分的附录详细说明了实现的相关细节及⽰例。
SM2算法主要考虑素域Fp和F2m上的椭圆曲线,分别介绍了这两类域的表⽰,运算,以及域上的椭圆曲线的点的表⽰,运算和多倍点计算算法。然后介绍了编程语⾔中的数据转换,包括整数和字节串,字节串和⽐特串,域元素和⽐特串,域元素和整数,点和字节串之间的数据转换规则。
详细说明了有限域上椭圆曲线的参数⽣成以及验证,椭圆曲线的参数包括有限域的选取,椭圆曲线⽅程参数,椭圆曲线基点的选取等,并给出了选取的标准以便于验证。最后给椭圆曲线上密钥对的⽣成以及公钥的验证,⽤户的密钥对为(s,sP),其中s为⽤户的私钥,sP为⽤户的公钥,由于离散对数问题
从sP难以得到s,并针对素域和⼆元扩域给出了密钥对⽣成细节和验证⽅式。总则中的知识也适⽤于SM9算法。
在总则的基础上给出了数字签名算法(包括数字签名⽣成算法和验证算法),密钥交换协议以及公钥加密算法(包括加密算法和解密算法),并在每个部分给出了算法描述,算法流程和相关⽰例。
数字签名算法,密钥交换协议以及公钥加密算法都使⽤了国家密管理局批准的SM3密码杂凑算法和随机数发⽣器。数字签名算法,密钥交换协议以及公钥加密算法根据总则来选取有限域和椭圆曲线,并⽣成密钥对。
SM2算法在很多⽅⾯都优于RSA算法(RSA发展得早应⽤普遍,SM2领先也很⾃然)
3 SM3杂凑算法
SM3密码杂凑(哈希、散列)算法给出了杂凑函数算法的计算⽅法和计算步骤,并给出了运算⽰例。**此算法适⽤于商⽤密码应⽤中的数字签名和验证,消息认证码的⽣成与验证以及随机数的⽣成,可满⾜多种密码应⽤的安全需求。**在SM2,SM9标准中使⽤。
此算法对输⼊长度⼩于2的64次⽅的⽐特消息,经过填充和迭代压缩,⽣成长度为256⽐特的杂凑值,其中使⽤了异或,模,模加,移位,与,或,⾮运算,由填充,迭代过程,消息扩展和压缩函数所构成。
具体算法及运算⽰例见SM3标准。
4 SM4对称算法
**此算法是⼀个分组算法,⽤于⽆线局域⽹产品。**该算法的分组长度为128⽐特,密钥长度为128⽐特。加密算法与密钥扩展算法都采⽤32轮⾮线性迭代结构。解密算法与加密算法的结构相同,只是轮密钥的使⽤顺序相反,解密轮密钥是加密轮密钥的逆序。
此算法采⽤⾮线性迭代结构,每次迭代由⼀个轮函数给出,其中轮函数由⼀个⾮线性变换和线性变换复合⽽成,⾮线性变换由S盒所给出。其中rki为轮密钥,合成置换T组成轮函数。轮密钥的产⽣与上图流程类似,由加密密钥作为输⼊⽣成,轮函数中的线性变换不同,还有些参数的区别。SM4算法的具体描述和⽰例见SM4标准。
5 SM7对称密码
SM7算法,是⼀种分组密码算法,分组长度为128⽐特,密钥长度为128⽐特。SM7适⽤于⾮接触式IC卡,应⽤包括⾝份识别类应⽤(门禁卡、⼯作证、参赛证),票务类应⽤(⼤型赛事门票、展会门票),⽀付与通卡类应⽤(积分消费卡、校园⼀卡通、企业⼀卡通等)。
6 SM9标识密码算法
为了降低公开密钥系统中密钥和证书管理的复杂性,以⾊列科学家、RSA算法发明⼈之⼀Adi Shamir在1984年提出了标识密码
(Identity-Based Cryptography)的理念。标识密码将⽤户的标识(如邮件地址、⼿机号码、QQ号码等)作为公钥,省略了交换数字证书和公钥过程,使得安全系统变得易于部署和管理,⾮常适合端对端离线安全通讯、云端数据加密、基于属性加密、基于策略加密的各种场合。2008年标识密码算法正式获得国家密码管理局颁发的商密算法型号:SM9(商密九号算法),为我国标识密码技术的应⽤奠定了坚实的基础。qq分组简单
SM9算法不需要申请数字证书,适⽤于互联⽹应⽤的各种新兴应⽤的安全保障。如基于云技术的密码服务、电⼦邮件安全、智能终端保护、物联⽹安全、云存储安全等等。这些安全应⽤可采⽤⼿机号码或邮件地址作为公钥,实现数据加密、⾝份认证、通话加密、通道加密等安全应⽤,并具有使⽤⽅便,易于部署的特点,从⽽开启了普及密码算法的⼤门。
7 ZUC祖冲之算法
祖冲之序列密码算法是中国⾃主研究的流密码算法,**是运⽤于移动通信4G⽹络中的国际标准密码算法,**该算法包括祖冲之算法(ZUC)、加密算法(128-EEA3)和完整性算法(128-EIA3)三个部分。⽬前已有对ZUC算法的优化实现,有专门针对128-EEA3和128-EIA3的硬件实现与优化。
RSA 算法
RSA原理
在RSA原理之前,我想还是有必要了解⼀下⾮对称加密算法的加密跟解密过程。下⾯就是⼀幅⾮称加密算法的流程图。
在此可以看到,⾮对称加密是通过两个密钥(公钥-私钥)来实现对数据的加密和解密的。公钥⽤于加密,私钥⽤于解密。对于⾮对称的加密和解密为什么可以使⽤不同的密钥来进⾏,这些都是数学上的问题了。不同的⾮对称加密算法也会应⽤到不同的数学知识。上⾯也对RSA 中使⽤的数学问题做了⼀个⼩⼩的介绍。现在就来看看RSA算法是怎么来对数据进⾏加密的吧,如下是⼀幅RSA加密算法流程及加密过程图。
RSA算法优点
1、不需要进⾏密钥传递,提⾼了安全性
2、可以进⾏数字签名认证
RSA算法缺点
1、加密解密效率不⾼,⼀般只适⽤于处理⼩量数据(如:密钥)
2、容易遭受⼩指数攻击
DES、3DES、AES、RSA、MD5、sha1 加密算法总结
⼀、简介
DES: 全称为Data Encryption Standard,即数据加密标准,是⼀种使⽤密钥加密的块算法;
3DES:(即Triple DES)是DES向AES过渡的加密算法,它使⽤3条56位的密钥对数据进⾏三次加密。3DES更为安全。
AES : ⾼级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中⼜称Rijndael加密法,这个标准⽤来替代原先的DES;
RSA : 公钥加密算法是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)⼀起提出的。
MD5 : Message Digest Algorithm MD5(消息摘要算法第五版)为计算机安全领域⼴泛使⽤的⼀种散列函数,⽤以提供消息的完整性保护。
SHA1:即安全哈希算法(Secure Hash Algorithm),主要适⽤于数字签名标准,SHA1会产⽣⼀个160位的消息摘要;
⼆、可解密
1.对称加密:DES、3DES、AES
采⽤单钥密码系统的加密⽅法,同⼀个密钥可以同时⽤作信息的加密和解密,这种加密⽅法称为对称加密,也称为单密钥加密。
美国数据加密标准(DES)是对称密码算法,就是加密密钥能够从解密密钥中推算出来,反过来也成⽴。密钥较短,加密处理简单,加解密速度快,适⽤于加密⼤量数据的场合。
2.HASH算法:MD5
三、不可解密

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。