导航:首页 > 源码编译 > aes算法des

aes算法des

发布时间:2022-12-22 19:45:30

1. 6 Go 密码学(三)对称加密 DES、TDES、AES

我们在开发中常会遇到这种需求:通信的两端需要传输安全级别较高的数据,这需要我们传输的加密数据既要难以破解,又要可逆的解密过程。哈希算法虽难以破解,但并非适用于通信中的加解密传输。这就需要基于秘钥管理的加密技术了。对称加密是最简单快速的加密方式,所谓对称加密,即加解密双方都掌握相同的秘钥,通过同一秘钥完成加解密操作。常用的对称加密算法有:

Go标准库中的加密相关包都有相应的支持,下面我们来逐一演示:

所以要实现DES加密需要准备如下要求:

以上,秘钥和初始化向量值需要自己管理,末尾分组的填充算法和删除算法需要自己实现。下面我们实现一个填充算法和删除算法:

以上实现思路为:计算出最后一个分组需要填充的字节数(1-8),并把这个数作为需要填充的占位符,再把填充后的分组与源数据拼接就得到待加密的字符串。

Go通过crypto/des包支持DES加密算法:

使用以上加解密方法:

以上就是Go 中DES的加解密实现,可见其加密的安全性依赖于秘钥的管理,而且其只有64Bit的秘钥长度在算力越来越高的现在已经不够安全了,这也是对称加密的弱点,在实际的网络项目中,秘钥的分发需要依赖其他方式的配合。

对于DES秘钥较弱的问题做了一些改进,这就是三重DES加密算法,其原理与DES类似,唯一不同的是秘钥从一组八字节变成三组二十四字节(192Bit)。其加密强度也和秘钥设置相关,此处演示我们也用CBC分组模式,三重加密执行顺序分别为,加密->解密->加密。

为了兼容DES,只有当秘钥一组和秘钥二组相同时,3DES其加密安全性和DES相同,其余秘钥的分组设置都是三重DES加密。

使用以上加解密方法:

随着时代的发展,DES和3DES于现今的算力和性能要求来说已经逐渐落伍,为了适应更高的安全性和性能需要,业界采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。这就是AES对称加密算法,在现今的项目开发中,建议使用这种加密方式。

AES的基本要求是,采用对称分组密码体制,密钥的长度最少支持为128、192、256,分组长度128位。

所以要实现AES加密需要准备如下要求:

Go通过crypto/aes包支持DES加密算法:

以上,其用法和DES差不多,只不过秘钥管理稍微不同而已。

2. AES DES加密有什么区别啊

AES和DES加密的区别:
1、密钥长度不同
AES 密钥长度可以是 128 位,192 位和 256 位。DES 密钥长度在 DES 中为 56 位。
2、轮数不同
AES 轮数取决于密钥长度:10 (128 位), 12 (192 位) 或 14 (256 位)。DES 涉及 16 轮相同的操作。
3、原理不同
AES 结构基于置换排列网络。DES 结构基于 feistal 网络。
4、安全性不同
AES 比 DES 密码更安全,并且是事实上的世界标准。由于 DES 具有已知漏洞,因此很容易被破坏。 3DES (三重 DES) 是 DES 的一种变体,它比通常的 DES 安全。
5、回合不同
AES 中的回合为:字节替换,移位行,混合列和键添加。DES 中的回合为:扩展,带回合键的 XOR 操作,替换和置换。
6、加密不同
AES 可以加密 128 位纯文本。DES 可以加密 64 位纯文本。

3. 什么是AES算法

加密算法分为单向加密和双向加密。
单向加密 包括 MD5 , SHA 等摘要算法。单向加密算法是不可逆的,也就是无法将加密后的数据恢复成原始数据,除非采取碰撞攻击和穷举的方式。像是银行账户密码的存储,一般采用的就是单向加密的方式。

双向加密 是可逆的,存在密文的密钥,持有密文的一方可以根据密钥解密得到原始明文,一般用于发送方和接收方都能通过密钥获取明文的情况。双向加密包括对称加密和非对称加密。对称加密包括 DES 加密, AES 加密等,非对称加密包括 RSA 加密, ECC 加密。
AES 算法全称 Advanced Encryption Standard ,是 DES 算法的替代者,也是当今最流行的对称加密算法之一。

要想学习AES算法,首先要弄清楚三个基本的概念:密钥、填充、模式。

密钥是 AES 算法实现加密和解密的根本。对称加密算法之所以对称,是因为这类算法对明文的加密和解密需要使用同一个密钥。

AES支持三种长度的密钥:

128位,192位,256位

平时大家所说的AES128,AES192,AES256,实际上就是指的AES算法对不同长度密钥的使用。从安全性来看,AES256安全性最高。从性能来看,AES128性能最高。本质原因是它们的加密处理轮数不同。

要想了解填充的概念,我们先要了解AES的分组加密特性。AES算法在对明文加密的时候,并不是把整个明文一股脑加密成一整段密文,而是把明文拆分成一个个独立的明文块,每一个明文块长度128bit。

这些明文块经过AES加密器的复杂处理,生成一个个独立的密文块,这些密文块拼接在一起,就是最终的AES加密结果。

但是这里涉及到一个问题:

假如一段明文长度是192bit,如果按每128bit一个明文块来拆分的话,第二个明文块只有64bit,不足128bit。这时候怎么办呢?就需要对明文块进行填充(Padding)。AES在不同的语言实现中有许多不同的填充算法,我们只举出集中典型的填充来介绍一下。

不做任何填充,但是要求明文必须是16字节的整数倍。

如果明文块少于16个字节(128bit),在明文块末尾补足相应数量的字符,且每个字节的值等于缺少的字符数。

比如明文:{1,2,3,4,5,a,b,c,d,e},缺少6个字节,则补全为{1,2,3,4,5,a,b,c,d,e,6,6,6,6,6,6}

如果明文块少于16个字节(128bit),在明文块末尾补足相应数量的字节,最后一个字符值等于缺少的字符数,其他字符填充随机数。

比如明文:{1,2,3,4,5,a,b,c,d,e},缺少6个字节,则可能补全为{1,2,3,4,5,a,b,c,d,e,5,c,3,G,$,6}

需要注意的是,如果在AES加密的时候使用了某一种填充方式,解密的时候也必须采用同样的填充方式。

AES的工作模式,体现在把明文块加密成密文块的处理过程中。AES加密算法提供了五种不同的工作模式:

ECB、CBC、CTR、CFB、OFB

模式之间的主题思想是近似的,在处理细节上有一些差别。我们这一期只介绍各个模式的基本定义。

电码本模式 Electronic Codebook Book

密码分组链接模式 CipherBlock Chaining

计算器模式 Counter

密码反馈模式 CipherFeedBack

输出反馈模式 OutputFeedBack

如果在AES加密的时候使用了某一种工作模式,解密的时候也必须采用同样的工作模式。

AES加密主要包括两个步骤: 密钥扩展 明文加密

密钥扩展过程说明(密钥为16字节):

函数g的流程说明:

轮常量(Rcon)是一个字,最右边三个字节总为0。因此字与Rcon相异或,其结果只是与该字最左的那个字节相异或。每轮的轮常量不同,定位为Rcon[j] = (RC[j], 0, 0, 0)。(RC是一维数组)
RC生成函数:RC[1] = 1, RC[j] = 2 * RC[j – 1]。
因为16字节密钥的只进行10轮的扩展,所以最后生成的RC[j]的值按16进制表示为:

十轮的密钥扩展后,就能生成44个字大小的扩展密钥。扩展后的密钥将用于AES对明文的加密过程。

S盒是16×16个字节组成的矩阵,行列的索引值分别从0开始,到十六进制的F结束,每个字节的范围为(00-FF)。

进行字节代替的时候,把状态中的每个字节分为高4位和低4位。高4位作为行值,低4位作为列值,以这些行列值作为索引从S盒的对应位置取出元素作为输出,如下图所示:

S盒的构造方式如下:
(1) 按字节值得升序逐行初始化S盒。在行y列x的字节值是{yx}。
(2) 把S盒中的每个字节映射为它在有限域GF中的逆;{00}映射为它自身{00}。
(3) 把S盒中的每个字节的8个构成位记为(b7, b6, b5, b4, b3, b2, b1)。对S盒的每个字节的每个位做如下的变换:

ci指的是值为{63}的字节c的第i位。
解密过程逆字节代替使用的是逆S盒,构造方式为

字节d={05}。

逆向行移位将状态中后三行执行相反方向的移位操作,如第二行向右循环移动一个字节,其他行类似。

要注意,图示的矩阵的乘法和加法都是定义在GF(2^8)上的。
逆向列混淆原理如下:

轮密钥加后的分组再进行一次轮密钥加就能恢复原值.所以,只要经过密钥扩展和明文加密,就能将明文加密成密文,进行解密的时候,只需要进行逆向变换即可。

图[AES加密算法的流程]中还需要注意,明文输入到输入状态后,需要进行一轮的轮密钥加,对输入状态进行初始化。 前9轮的加密过程,都需要进行字节替代、行移位、列混淆和轮密钥加,但是第10轮则不再需要进行列混淆。

进行解密的时候,需要进行逆向字节替代,逆向行移位、逆向列混淆和轮密钥加。

4. AES算法出现后,DES算法还被广泛应用吗

AES为了取代DES而产生。
AES出台后,DES在正式商用公用的新场合都已经不再使用,只保留对旧软件的兼容支持。
但3次叠加的3DES算法还在各个允许运用的标准中。

DES在密性需求不大的私用领域,还是可以使用的。毕竟现在破DES还是需要成本,即使成本很低低到5角钱,很多信息也不值得花5角钱去破。何况破解DES的成本肯定在十万元以上。

腾讯还在QQ中应用TEA算法,而TEA的密性比DES还差很多倍。所以DES在非商用场合还是可以被应用的。

5. AES和DES的比较

对称加密AES和DES总结:

1.两个加密算法都是对数据进行分块加密

2.两个加密算法都需要去扩展密钥

3.都有自己对应的表对要加密的明文去做转换

4.都是用子密钥去对转换之后的明文做加密处理

AES原理讲解1

AES原理讲解2

漫画版AES原理讲解

AES算法的填充模式

6. 几种常用数据加密算法的比较

几种对称性加密算法:AES,DES,3DES
DES是一种分组数据加密技术(先将数据分成固定长度的小数据块,之后进行加密),速度较快,适用于大量数据加密,而3DES是一种基于DES的加密算法,使用3个不同密匙对同一个分组数据块进行3次加密,如此以使得密文强度更高。
相较于DES和3DES算法而言,AES算法有着更高的速度和资源使用效率,安全级别也较之更高了,被称为下一代加密标准。
几种非对称性加密算法:RSA,DSA,ECC
RSA和DSA的安全性及其它各方面性能都差不多,而ECC较之则有着很多的性能优越,包括处理速度,带宽要求,存储空间等等。
几种线性散列算法(签名算法):MD5,SHA1,HMAC
这几种算法只生成一串不可逆的密文,经常用其效验数据传输过程中是否经过修改,因为相同的生成算法对于同一明文只会生成唯一的密文,若相同算法生成的密文不同,则证明传输数据进行过了修改。通常在数据传说过程前,使用MD5和SHA1算法均需要发送和接收数据双方在数据传送之前就知道密匙生成算法,而HMAC与之不同的是需要生成一个密匙,发送方用此密匙对数据进行摘要处理(生成密文),接收方再利用此密匙对接收到的数据进行摘要处理,再判断生成的密文是否相同。
对于各种加密算法的选用:
由于对称加密算法的密钥管理是一个复杂的过程,密钥的管理直接决定着他的安全性,因此当数据量很小时,我们可以考虑采用非对称加密算法。
在实际的操作过程中,我们通常采用的方式是:采用非对称加密算法管理对称算法的密钥,然后用对称加密算法加密数据,这样我们就集成了两类加密算法的优点,既实现了加密速度快的优点,又实现了安全方便管理密钥的优点。
如果在选定了加密算法后,那采用多少位的密钥呢?一般来说,密钥越长,运行的速度就越慢,应该根据的我们实际需要的安全级别来选择,一般来说,RSA建议采用1024位的数字,ECC建议采用160位,AES采用128为即可。

7. DES和AES算法的比较,各自优缺点有哪些

聂定远;李小俊讨论了目前主要的一些数据加密算法、DES算法及高级加密标准(AES)的Rijndael算法.比较了DES、AES对称密码算法,得出AES具有比DES更好的安全性、效率、灵活性的结论.【作者单位】:中国地质大学信息工程学...

8. DES和AES算法的比较,各自优缺点有哪些

聂定远;李小俊
讨论了目前主要的一些数据加密算法、DES算法及高级加密标准(AES)的Rijndael算法。比较了DES、AES对称密码算法,得出AES具有比DES更好的安全性、效率、灵活性的结论。
【作者单位】:中国地质大学信息工程学院 湖北武汉430074
【关键词】:密码算法;数据加密;DES;AES
【分类号】:TN918.1
【正文快照】:
1DES算法介绍DES算法具有对称性,既可以用于加密又可以用于解密。对称性带来的一个很大的好处在于硬件实现,DES的加密和解密可以用完全相同的硬件来实现。DES算法的明文分组是64位,输出密文也是64位。所以密钥的有效位数是56位,加上校验位共64位。总体流程如表1所示:输入的64位明文,先经初始IP变换,形成64位数据,64位数据被分为两部分,分别是L部分和 R部分;L和R经过16次迭代,形成新的64位;新的64位数据再经初始逆变换,输出64位密文。初始置换和逆初始置换是简单的移位操作。在迭代过程这一步骤,替代是在密钥控制下进行的,而移位是按…

9. “DES”和“AES”算法的比较,各自优缺点有哪些

DES算法优点:DES算法具有极高安全性,到目前为止,除了用穷举搜索法对DES算法进行攻击外,还没有发现更有效的办法。

DES算法缺点:

1、分组比较短。

2、密钥太短。

3、密码生命周期短。

4、运算速度较慢。

AES算法优点:

1、运算速度快。

2、对内存的需求非常低,适合于受限环境。

3、分组长度和密钥长度设计灵活。

4、 AES标准支持可变分组长度,分组长度可设定为32比特的任意倍数,最小值为128比特,最大值为256比特。

5、 AES的密钥长度比DES大,它也可设定为32比特的任意倍数,最小值为128比特,最大值为256比特,所以用穷举法是不可能破解的。

6、很好的抵抗差分密码分析及线性密码分析的能力。

AES算法缺点:目前尚未存在对AES 算法完整版的成功攻击,但已经提出对其简化算法的攻击。

(9)aes算法des扩展阅读:

高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。

这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院(NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准。2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一。

阅读全文

与aes算法des相关的资料

热点内容
php函数传递数组 浏览:629
人工峰群算法的目标函数 浏览:464
如何删加密文档 浏览:103
涂鸦app一键执行如何删除 浏览:754
安卓手机如何打开fr3文件 浏览:741
压缩袋8丝和14丝是什么意思 浏览:645
程序员大咖java 浏览:66
苹果手机文档安卓上怎么打开 浏览:527
如何做淘宝代理服务器 浏览:664
gz压缩文件夹 浏览:179
字母h从右往左跑的c语言编程 浏览:127
安卓手机如何拥有苹果手机横条 浏览:765
业余编程语言哪个好学 浏览:137
按照文件夹分个压缩 浏览:104
航空工业出版社单片机原理及应用 浏览:758
如何在电信app上绑定亲情号 浏览:376
安卓的怎么用原相机拍月亮 浏览:805
配音秀为什么显示服务器去配音了 浏览:755
c盘清理压缩旧文件 浏览:325
app怎么交付 浏览:343