‘壹’ 什么是AES算法
1997年1月2日,美国国家标准和技术研究院(National Institute of Standard and Technology,NIST)宣布征集一个新的对称密钥分组密码算法作为新的加密标准,以取代即将过期的DES。新的算法被命名为高级加密标准(Advanced)。1997年9月12日发布了征集算法的正式公告,要求AES具有128位分组长度,支持128、192和256位的密钥长度。比三重DES有效,至少要与三重DES一样安全,而且要求AES能在全世界范围内免费得到。
1998年8月20日,NIST宣布接受15个算法为AES的候选算法,并提交全世界的密码学界协助分析这些算法。1999年8月,确定了5个候选决赛算法,分别是MARS、RC6、Rijndael、Serpent和Twofish。经过对决赛算法的进一步分析,2000年10月NIST决定将Rijndael作为AES,并于2002年5月26日制定了AES的规范。
Rijndael是由比利时的两位密码学家Daemen和Rijment共同设计的。Rijndael算法是一个迭代型分组密码,其分组长度和密钥长度都可变,各自可以为128比特、192比特和256比特。Rijndael对明文以字节为单位进行处理。以128位的分组、128位密钥的情况为例,首先将明文按字节分成列组,将明文的前4个字节组成一列,接下来的4个字节组成第二列,后面的字节依次组成第三列和第四列,这样就组成了一个4×4的矩阵,如图所示。
这样就完成了AES算法。(本文为原创,转载需向我请求权限,谢谢~)
‘贰’ 柏拉图之吻
它的意思是:只有精神上的恋爱。但没有肉体上的结合。这样纯洁,洁白的爱情是不可玷污的。才称为柏拉图式的爱情。
也有人说它是一种永久的,不求回报的爱.即使不能相守,只要看到对方幸福,这份爱便会绵延下去,直到永恒.有些人,上帝给了他们缘分,让他们相遇,但是却忘了给他们交点,于是这份爱,只能变成远远的守望,而这两个人,也将永远如同平行线一般,不能在一起.
‘叁’ 英文翻译成中文
高级加密标准
在加密技术,先进加密标准( AES ) ,也称为Rijndael算法,是一种分组密码通过加密标准由美国政府。据分析广泛,目前全球范围内使用,如与它的前身[ 3 ]数据加密标准( DES ) 。 AES公司宣布了美国国家标准与技术局( NIST ) ,美国的FIPS酒吧197 (符合FIPS 197 ) 11月26日2001年5年的标准化进程,其中15人竞争的设计和评价,提出了Rijndael算法之前,被选为最合适的(见先进加密标准过程的更多细节) 。它成为有效的标准2002年5月26日。截至2006年, AES公司是一个最流行的算法中使用对称密钥加密。它可以选择在许多不同的加密软件包。这标志着第一次公众已经获得密码批准的国家安全局的绝密资料(见安全的AES ,下文) 。
该密码是由两名比利时译解密码,琼Daemen和Vincent Rijmen ,并提交给AES公司甄选过程,称为“ Rijndael算法” ,一个皮包的姓名发明者。 ( Rijndael算法是显着[ rɛinda ː升] ) 。 [ 4 ]
不同的加密(先前的AES ) , AES公司是一个代替置换网络,而不是一个Feistel网络。 AES公司是快速的软件和硬件,是比较容易执行,而且需要很少的内存。作为一个新的加密标准,这是目前部署大规模。
说明密码
严格地说, AES公司是Rijndael算法并不准确(尽管实际上他们互换使用)作为Rijndael算法支持更大范围的封锁和关键尺寸; AES公司拥有一个固定的块大小的128位和关键尺寸为128 , 192或256位,而Rijndael算法可以指定与关键和块大小在任何多的32位,最低的128位,最高为256位。
由于在计算1字节等于8位,固定块大小的128位通常是八分之一百二十八= 16字节。 AES公司经营的4 × 4阵列的字节,称为状态( Rijndael算法版本与较大的块大小有额外的列在该州) 。 AES公司的计算大多数都是在一个特殊的有限领域。
在密码中指定的重复处理步骤,用于弥补轮打出变革之间的输入纯文本和最终输出的密码文字。一套扭转轮适用于变换密码的文字回到原来的纯文字使用相同的加密密钥。
‘肆’ Rijndael算法是否存在弱密钥
Rijndael,在高级加密标准(AES)中使用的基本密码算法。
概述
(美国)国家标准技术研究所(NIST)选择Rijndael作为美国政府加密标准(AES)的加密算法,AES取代早期的数据加密标准(DES)。Rijndael由比利时计算机科学家Vincent Rijmen和Joan Daemen开发,它可以使用128位,192位或者256位的密钥长度,使得它比56位的DES更健壮可靠。Rijndael也有一个非常小的版本(52位),合适用在蜂窝电话、个人数字处理器(PDA)和其他的小设备上。
近似读音:Rijn [rain] dael [del] (莱恩戴尔)
Rijn 来源 Rhine [莱茵河]的荷兰语(Dutch)发音。
dael 是常用的人名 这词是两个科学家的名字各出一段拼成的。
‘伍’ Rijndael算法、AES
Rijndael是以比利时发明人Vincent Rijmen, Joan Daemen的名字命名的算法名。
AES是美国国家标准和技术协会的"高级加密标准"的标准。
Rijndael算法发明人在1999年9月提交算法到AES标准审议,和其他15个算法竞赛经过3轮论证胜出,成为AES2标准算法,并在2001年公布。
现在Rijndeal和AES算法基本同义。但说Rijndeal更注重的流程思路及原理的同一类算法,而AES是连参数都被固定精确,可以复制出结果的标准文档。
‘陆’ 128位高度加密法是什么啊!
所谓对称算法就是指加密和解密过程均采用同一把密钥。如DES,3DES,AES等算法都属于对称算法。下面会对这几种有代表性的算法一一做介绍。
DES算法
DES(Data Encryption Standard)是一种经典的对称算法。其数据分组长度为64位,使用的密钥为64位,有效密钥长度为56位(有8位用于奇偶校验)。它由IBM公司在70年代开发,经过政府的加密标准筛选后,于1976年11月被美国政府采用,随后被美国国家标准局和美国国家标准协会(American National Standard Institute, ANSI) 承认。
该技术算法公开,在各行业有着广泛的应用。DES算法从公布到现在已有20多年的历史,随着计算机能力的飞速发展,DES的56位密钥长度显得有些短了。现在,已经有可能通过穷举的方法来对其进行攻击。但是除此以外,还没有发现穷举以外的能有效破译DES的方法。
三重DES
DES算法现在已经不能提供足够的安全性,因为其有效密钥只有56位。因此,后来又提出了三重DES(或称3DES),该方法的强度大约和112比特的密钥强度相当。
这种方法用两个密钥对明文进行三次运算。设两个密钥是K1和K2,其算法的步骤:
1. 用密钥K1进行DES加密。
2. 用K2对步骤1的结果进行DES解密。
3. 用步骤2的结果使用密钥K1进行DES加密。
13. AES算法
1997年1月美国国家标准和技术研究所(NIST)宣布征集新的加密算法。2000年10月2日,由比利时设计者Joan Daemen和Vincent Rijmen设计的Rijndael算法以其优秀的性能和抗攻击能力,最终赢得了胜利,成为新一代的加密标准AES(Advanced Encryption Standard)。
Rijndael加密:
Rijndael是一个密钥迭代分组密码,包含了轮变换对状态的重复作用。轮数Nr 的值取决于分组和密钥的长度。对于AES,当密钥长度为128比特时,Nr =10;当密钥长度为192比特时,Nr =12;当密钥长度为256比特时,Nr =14。
Rijndael算法的加密过程如图1所示。它包括一个初始密钥加法,记作AddRoundKey,接着进行Nr-1次轮变换(Round),最后再使用一个轮变换(FinalRound)。
轮变换由4个步骤组成:SubBytes,ShiftRows,MixColumns和AddRoundKey。最后一轮与前Nr -1次轮变换稍有不同,省掉了其中的MixColumns步骤。
步骤SubBytes是Rijndael算法中唯一的非线性变换。
步骤ShiftRows是一个字节换位,它将状态中的行按照不同的偏移量进行循环移位。使第i 行第j 位的字节移动到位置(j -Ci)mod Nb,移动偏移量Ci 的值依赖于Nb 的取值。其中Nb =分组长度/32,对于AES,Nb 取固定长度4。
步骤MixColumns是作用在状态各列的置换算法。
密钥加法AddRoundKey将状态与一个轮密钥进行异或。轮密钥是由密码密钥通过密钥编排方案[1]导出。轮密钥的长度等于分组的长度。
Rijndael解密:
Rijndael解密算法有2种形式。一种是直接解密算法,即直接利用步骤InsubBytes,InvShiftRows,InvMixColumns和AddRoundKey的逆并倒置其次序对数据进行解密。
另一种是等价解密算法。等价解密算法有利于有效实现良好的运算次序。
‘柒’ Rijndael 算法流程和参数
最近我在项目中遇到了Rijndael算法进行加密的场景,使用它作为一种对称加密的手段防御网络攻击,下面说一下他的流程,部分图解是手写然后扫描出来的。
Rijndael算法是AES算法的一种,是一种分组加密模式,也就是说把明文分成定长的若干段,用定长的密钥进行加密计算。下图中绿色矩阵代表k密钥(key),黄色矩阵代表明文或者状态(state)。
Rijndael流程是由四种基本的运算组成的,这四种运算以特定的顺序进行循环,对初始的明文和密钥进行计算,数据的形式是矩阵,矩阵中的每一个元素都是一个字节(8 bits)的16进制表示,比如128bits的数据用4×4的矩阵表示,那么每一个元素就占有8 bits,也就是一个字节,分成上半字节(4 bits)和下半字节(4 bits),就得到了诸如"a0", "c6"此类的数据,那么128bits的明文和密钥就可以用矩阵表示并且进行计算。
首先介绍总体流程,其中具有循环:
中间循环模块的循环次数和密钥与密文块的长度有关:128bits密钥--10轮循环、192bits--12轮循环、256bits--14轮循环。
可以看到子环节有四种:subBytes, shiftRows, mixColumns, addRoundKey,下面手画的图中分别用[1], [2], [3], [4]方框去在图中进行标记。值得注意的是初始的处理和尾轮循环都是不太一样的,不是完整的四个子环节。
【1】将元素的高半字节和低半字节作为x y坐标,映射S-box中的元素,进行矩阵的整体替换
【2】将第i行(从0行开始)的元素向左推,被推出的元素放在右侧
需要注意的是每次经过步骤【4】,使用的key都是不同的,初始的key经过计算不断的变化,这个过程也叫做计算子密钥:
计算子密钥的第一列的步骤如下:
输入输出的参数可以参照一些工具网站,可以提供加密的计算服务
‘捌’ 【密码学笔记】第3部分 对称密码
跟诸位大牛相比,笔者阅历尚浅、经验不足,笔记中若有错误,还需继续修正与增删。欢迎大家的批评与指正。
查看上一篇请点击以下链接: 【密码学笔记】第2部分 历史上的密码
1. XOR运算
2. 一次性密码本
3. 对称密码算法
3.1 DES
3.2 三重DES
3.3 AES
3.4 Rijndael
4. 对称密码的选择
5. 对称密码的评价
参考书目
XOR运算,又称为 异或 运算,运算结果是 同0异1 。
对同一个比特序列进行两次XOR之后就会回到最初的状态,因此XOR运算可用于对称密码的加密和解密。
一次性密码本(又称为 维纳密码 )是一种非常简单的密码,它的原理是“ 将明文与一串随机的比特序列进行XOR运算 ”。
一次性密码本是无法破译的。 这是因为在对它尝试解密的过程中,所有的排列组合都会出现,既会包含规则字符串,也会包含英文单词,还会包含乱码。由于明文中所有可能的排列组合都会出现,因此 我们无法判断其中哪一个才是正确的明文 。
一次性密码本是一种非常不实用的密码。 原因如下:
a. 密钥的配送 。( 最大的问题 )如果能够有一种方法将密钥安全地发送出去,那么就可以用同样的方法安全地发送明文。
b. 密钥的保存 。 密钥的长度必须和明文的长度相等。 如果能够有办法安全保存与明文一样长的密钥,那就有办法安全保存明文本身。
c. 密钥的重用 。在一次性密码本中绝对不能重用过去用过的随机比特序列,因为作为密钥的比特序列一旦泄露,过去所有的机密通信内容将全部被解密。
d. 密钥的同步 。在通信过程中,发送者和接收者的密钥的比特序列不允许有任何错位,否则错位的比特后的所有信息都将无法解密。
e. 密钥的生成 。一次性密码本需要生成大量的随机数,这里的随机数并不是通过计算机程序生成的伪随机数,而必须是无重现性的真正随机数。
DES是一种将64比特的明文加密成64比特的密文的对称密码算法,它的密钥长度是56比特。
DES是以64比特的明文(比特序列)为一个单位来进行加密的,这个64比特的单位称为 分组 。以分组为单位进行处理的密码算法称为 分组密码 。
DES每次只能加密64比特的数据,如果要加密的明文比较长,就需要对DES加密进行迭代,而迭代的具体方式就称为 模式(mode) 。
DES的基本结构又称为 Feistel网络 ,这一结构不仅被用于DES,在其他很多密码算法中也有应用。在Feistel网络中,加密的各个步骤称为 轮(round) ,整个加密过程就是进行若干次轮的循环。下图展现的是Feistel网络中一轮的计算流程。DES是一种16轮循环的Feistel网络。
一轮的具体计算步骤 如下:
a. 将输入的数据等分为左右两部分;
b. 将输入的右侧直接发送到输出的右侧;
c. 将输入的右侧发送到轮函数;
d. 轮函数根据右侧数据和子密钥,计算出一串看上去是随机的比特序列;
e. 将上一步得到的比特序列与左侧数据进行XOR运算,并将结果作为加密后的左侧。
我们需要用不同的子密钥对一轮的处理重复若干次,并在每两轮处理之间将左侧和右侧的数据对调。
Feistel网络的解密操作只要按照相反的顺序来使用子密钥就可以完成了。
Feistel网络的性质 :
a. 轮数可以任意增加;
b. 加密时无论使用任何函数作为轮函数都可以正确解密(即使该函数不存在反函数);
c. 加密和解密可以用完全相同的结构来实现。
综上所述,无论是任何轮数、任何轮函数,Feistel网络都可以 用相同的结构实现加密和解密 ,且加密的结果必定能够正确解密。
三重DES是为了增加DES的强度,将DES重复3次所得到的一种密码算法,也称为 TDEA ,通常缩写为 3DES 。
明文经过三次DES处理才能变成最后的密文,由于DES密钥的长度实质上是56比特,因此三重DES的密钥长度就是168比特。
三重DES并不是进行三次DES加密,而是 加密→解密→加密 的过程,目的是 让三重DES能够兼容普通的DES ,当所有密钥都相同时,三重DES也就等同于普通的DES。
尽管三重DES目前还被银行等机构使用,但其处理速度不高,除了特别重视向下兼容性的情况以外,很少被用于新的用途。
AES是取代其前任标准(DES)而成为新标准的一种对称密码算法。全世界的企业和密码学家提交了多个对称密码算法作为AES的候选,最终选出了一种名为 Rijndael 的对称密码算法,并将其确定为AES。
AES的选拔并不仅仅考虑一种算法是否存在弱点,算法的速度、实现的容易性等也都在考虑范围内。此外,这种算法还必须能够在各种平台上有效工作。
Rijndael是由比利时密码学家设计的 分组密码算法 ,被选为新一代的标准密码算法——AES。
和DES一样,Rijndael算法也是由多个 轮 构成的,其中每一轮分为 SubBytes 、 ShiftRows 、 MixColumns 和 AddRoundKey 共4个步骤。DES使用Feistel网络作为其基本结构,而Rijndael使用的是 SPN结构 。
加密过程 :
a. 首先,需要 逐个字节 地对16字节的输入数据进行SubBytes处理,即以每个字节的值(0~255)为索引,从一张拥有256个值的 替换表 (S-Box)中查找出对应值( 类似于简单替换密码 )。
b. 进行ShiftRows处理,即以4字节为单位的 行(row) 按照一定的规则向左平移,且每一行平移的字节数是不同的。
c. 进行MixColumns处理,即对一个4字节的值进行比特运算,将其变为另外一个4字节值。
d. 最后,将MixColumns的输出与轮密钥进行 XOR ,即进行AddRoundKey处理。至此,Rijndael的一轮就结束了。实际上,在Rijndael中需要重复进行10~14轮计算。
在SPN结构中, 输入的所有比特在一轮中都会被加密 。和每一轮都只加密一半输入的比特的Feistel网络相比,这种方式的优势在于 加密所需要的轮数更少 。此外,这种方式还有一个优势,即 SubBytes、ShiftRows和MixColumns可以分别以字节、行和列为单位进行并行计算 。
在Rijndael的 加密 过程中,每一轮所进行的处理为:
SubBytes→ShiftRows→MixColumns→AddRoundKey
而在 解密 时,则是按照相反的顺序来进行的,即:
AddRoundKey→InvMixColumns→InvShiftRows→InvSubBytes
解密过程 :
Rijndael算法背后有着 严谨的数学结构 ,即从明文到密文的计算过程可以全部用公式来表达,这是以前任何密码算法都不具备的性质。如果Rijndael的公式能够通过数学运算来求解,那也就意味着Rijndael能够通过数学方法进行破译,这也为新的攻击方式的产生提供了可能。
(1) 因为现在用暴力破解法已经能够在现实的时间内完成对DES的破译, DES不应再用于任何新的用途 。但是也需要保持与旧版本软件的兼容性。
(2) 尽管在一些重视兼容性的环境中会使用三重DES,但 我们也没有理由将三重DES用于新的用途 ,它会逐渐被AES所取代。
(3) 现在应该使用的算法是AES(Rijndael) ,因为它安全、快速,而且能够在各种平台上工作。
(4) AES最终候选算法应该可以作为AES的备份 ,因为这些密码算法也都经过了严格的测试,且没有发现任何弱点。
(5) 一般来说, 我们不应该使用任何自制的密码算法 ,而是应该使用AES。
优点 :
使用一种密钥空间巨大,且在算法上没有弱点的对称密码,就可以通过密文来确保明文的机密性。 巨大的密钥空间能够抵御暴力破解,算法上没有弱点可以抵御其他类型的攻击。
不足 :
a. 用对称密码进行通信时,还会出现 密钥的配送问题 ,即如何将密钥安全地发送给接受者。为了解决密钥配送问题,需要 公钥密码技术 。
b. 尽管使用对称密码可以确保机密性,但仅凭这一点还并不能完全放心。 例如发送者可能发送伪造的密文,并利用解密时返回的错误来盗取信息。
衷心感谢您的阅读。
查看下一篇请点击以下链接: 【密码学笔记】第4部分 分组密码的模式
‘玖’ rijndaelmanaged c#是什么算法
AES 高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法
Rijndael(读作rain-dahl)是由美国国家标准与技术协会(NIST)所选的高级加密标准(AES)的候选算法。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。
Rijndael 算法首先是一个密钥分组加密的算法,通过置换(permutations )和替换(substitutions)迭代加密,进过多轮操作形成密文。
AES算是Rijndael算法的一种特殊实现,选的分组为128bit(16字节),密钥可以使用128、192 和 256bit三种,而Rijndael使用的密钥和区块长度可以是32位的整数倍,以128位为下限,256比特为上限。加密过程中使用的密钥是由Rijndael密钥生成方案产生。
AES加密过程是在一个4×4的字节矩阵上运作,这个矩阵又称为“状态(state)”,其初值就是一个明文区块(矩阵中一个元素大小就是明文区块中的一个Byte)。(Rijndael加密法因支持更大的区块,其矩阵行数可视情况增加)加密时,各轮AES加密循环(除最后一轮外)均包含4个步骤:
AddRoundKey — 矩阵中的每一个字节都与该次轮秘钥(round key)做XOR运算;每个子密钥由密钥生成方案产生。
SubBytes — 通过非线性的替换函数,用查找表的方式把每个字节替换成对应的字节。
ShiftRows — 将矩阵中的每个横列进行循环式移位。
MixColumns — 为了充分混合矩阵中各个直行的操作。这个步骤使用线性转换来混合每列的四个字节。
‘拾’ 数据加密原理和算法是什么
拜托,数据加密本身是一门很大的学问,不可能只用一两句话说清楚的。
数据加密的算法多种多样,而且随着科技的发展不断推陈出新。目前PC上最常用的是rijndael算法,该算法已被美国政府采纳为标准加密算法,简称AES。在此之前,美国政府采用的是另一种算法,称为DES,近年来随着解密技术的不断进步,DES已逐渐被淘汰。
加密的原理呢,不同的算法也各有不同,一般都包括异或、移位、替换等操作。加密算法大体上分为流水加密和块式加密两大类,PC上采用的都是块式加密,就是把原文分成相同长度的数据块,例如每32字节分为一块,然后对每一块单独进行加密。
其他的太多了,说不完,而且我也不完全懂,想学的话你自己买书去看吧。