第13次(循环结构1)
- 格式:ppt
- 大小:343.00 KB
- 文档页数:13
AES算法加解密原理及安全性分析刘帅卿一、AES算法简介AES算法是高级加密标准算法的简称,其英文名称为Advanced Encryption Standard。
该加密标准的出现是因为随着对称密码的发展,以前使用的DES(Data Encryption Standard数据加密标准)算法由于密钥长度较小(56位),已经不适应当今数据加密安全性的要求,因此后来由Joan Daeman和Vincent Rijmen提交的Rijndael算法被提议为AES的最终算法。
AES是一个迭代的、对称密钥分组的密码,它可以使用128、192和256位密钥,并且用128位(16字节)分组加密和解密数据。
与公共密钥密码使用密钥对不同,对称密钥密码使用相同的密钥加密和解密数据。
通过分组密码返回的加密数据的位数与输入数据相同。
迭代加密使用一个循环结构,在该循环中重复置换(permutations)和替换(substitutions)输入数据。
加之算法本身复杂的加密过程使得该算法成为数据加密领域的主流。
二、AES算法的基本概念1、有限域(GF)由于AES算法中的所有运算都是在有限域当中进行的,所以在理解和实现该算法之前先得打好有限域这一基石才行。
通常的数学运算都是在实数域中进行,而AES算法则是在有限域中进行,我们可以将有限域看成是有确定边界范围的正整数集合,在该集合当中,任意两个元素之间的运算结果都仍然落在该集合当中,也即满足运算封闭性。
那么如何才能保证这样的“有限性”(也即封闭性)呢?GF(2w)被称之为伽罗华域,是有限域的典型代表。
随着w(=4,8,16,…)的取值不同所形成的有限域范围也不同。
AES算法中引入了GF域当中对数学运算的基本定义:将两数的加减法定义为两者的异或运算;将两数的乘法定义为多项式间的相乘并求余运算,其中被用于求余运算的除数被称为不可约多项式(或者称为求余多项式),它是固定的一个多项式:m(x) =8431x x x x ++++(数值为十六进制的11B ,这里是假定w=8时的情形)。
2021年桂林信息科技学院计算机科学与技术专业《计算机组成原理》科目期末试卷A(有答案)一、选择题1、某计算机按字节编址,指令字长固定且只有两种指令格式,其中三地址指令29条,二地址指令107条,每个地址字段为6位,则指令字长至少应该是()。
A.24位B.26位C.28位D.32位2、某计算机主存空间为4GB,字长为32位,按字节编址,采用32位定长指令字格式。
若指令按字边界对齐存放,则程序计数器(PC)和指令寄存器(IR)的位数至少分别是()。
A.30,30B.30,32C.32,30D.32,323、浮点数加/减运算过程一般包括对阶、尾数运算、规格化、舍入和判断溢出等步骤。
设浮点数的阶码和尾数均采用补码表示,且位数分别为5位和7位(均含两位符号位)。
若有两个数,即x=2×29/32,y=25×5/8,则用浮点数加法计算xty的最终结果是()。
A.001111100010B.001110100010C.010*********D.发生溢出4、某数采用IEEE754标准中的单精度浮点数格式表示为C6400000H,则该数的值是()。
A.-1.5×213B.-1.5×212C.-0.5×213D.-0.5×2125、一个C语言程序在一台32位机器上运行,程序中定义了3个变量x、y、z,其中x 和z是int型,y为short型。
当x=127,y=-9时,执行赋值语句z=xty后,x、y、z的值分别是()。
A.x=0000007FH,y=FFF9H,z=00000076HB.x=0000007FH,y=FFF9H,z=FFFFO076HC.X=0000007FH,y-FFF7H,z=FFFF0076HD.X=0000007FH,y=FFF7H,z=00000076H6、假定编译器将赋值语句“x=x+3;”转换为指令“add xaddr,3”,其中xaddr是x 对应的存储单元地址。
AES算法加解密原理及安全性分析刘帅卿一、AES算法简介AES算法是高级加密标准算法的简称,其英文名称为Advanced Encryption Standard。
该加密标准的出现是因为随着对称密码的发展,以前使用的DES(Data Encryption Standard数据加密标准)算法由于密钥长度较小(56位),已经不适应当今数据加密安全性的要求,因此后来由Joan Daeman和Vincent Rijmen提交的Rijndael算法被提议为AES的最终算法。
AES是一个迭代的、对称密钥分组的密码,它可以使用128、192和256位密钥,并且用128位(16字节)分组加密和解密数据。
与公共密钥密码使用密钥对不同,对称密钥密码使用相同的密钥加密和解密数据。
通过分组密码返回的加密数据的位数与输入数据相同。
迭代加密使用一个循环结构,在该循环中重复置换(permutations)和替换(substitutions)输入数据。
加之算法本身复杂的加密过程使得该算法成为数据加密领域的主流。
二、AES算法的基本概念1、有限域(GF)由于AES算法中的所有运算都是在有限域当中进行的,所以在理解和实现该算法之前先得打好有限域这一基石才行。
通常的数学运算都是在实数域中进行,而AES算法则是在有限域中进行,我们可以将有限域看成是有确定边界范围的正整数集合,在该集合当中,任意两个元素之间的运算结果都仍然落在该集合当中,也即满足运算封闭性。
那么如何才能保证这样的“有限性”(也即封闭性)呢?GF(2w)被称之为伽罗华域,是有限域的典型代表。
随着w(=4,8,16,…)的取值不同所形成的有限域范围也不同。
AES算法中引入了GF域当中对数学运算的基本定义:将两数的加减法定义为两者的异或运算;将两数的乘法定义为多项式间的相乘并求余运算,其中被用于求余运算的除数被称为不可约多项式(或者称为求余多项式),它是固定的一个多项式:m(x) =8431x x x x ++++(数值为十六进制的11B ,这里是假定w=8时的情形)。
算法设计之迭代法军人在进攻时常采用交替掩护进攻的方式,若在数轴上的点表示A,B两人的位置,规定在前面的数大于后面的数,则是A>B,B>A交替出现。
但现在假设军中有一个胆小鬼,同时大家又都很照顾他,每次冲锋都是让他跟在后面,每当前面的人占据一个新的位置,就把位置交给他,然后其他人再往前占领新的位置。
也就是A始终在B的前面,A向前迈进,B跟上,A把自己的位置交给B(即执行B = A操作),然后A 再前进占领新的位置,B再跟上……直到占领所有的阵地,前进结束。
像这种两个数一前一后逐步向某个位置逼近的方法称之为迭代法。
迭代法也称辗转法,是一种不断用变量的旧值递推新值的过程,跟迭代法相对应的是直接法(或者称为一次解法),即一次性解决问题。
迭代算法是用计算机解决问题的一种基本方法。
它利用计算机运算速度快、适合做重复性操作的特点,让计算机对一组指令(或一定步骤)进行重复执行,在每次执行这组指令(或这些步骤)时,都从变量的原值推出它的一个新值。
利用迭代算法解决问题,需要做好以下三个方面的工作:一、确定迭代变量。
在可以用迭代算法解决的问题中,至少存在一个直接或间接地不断由旧值递推出新值的变量,这个变量就是迭代变量。
二、建立迭代关系式。
所谓迭代关系式,指如何从变量的前一个值推出其下一个值的公式(或关系)。
迭代关系式的建立是解决迭代问题的关键,通常可以使用递推或倒推的方法来完成。
三、对迭代过程进行控制。
在什么时候结束迭代过程?这是编写迭代程序必须考虑的问题。
不能让迭代过程无休止地重复执行下去。
迭代过程的控制通常可分为两种情况:一种是所需的迭代次数是个确定的值,可以计算出来;另一种是所需的迭代次数无法确定。
对于前一种情况,可以构建一个固定次数的循环来实现对迭代过程的控制;对于后一种情况,需要进一步分析出用来结束迭代过程的条件。
最经典的迭代算法是欧几里德算法,用于计算两个整数a,b的最大公约数。
其计算原理依赖于下面的定理:定理:gcd(a, b) = gcd(b, a mod b)证明:a可以表示成a = kb + r,则r = a mod b 。
2021年贵州工业职业技术学院计算机应用技术专业《计算机组成原理》科目期末试卷A(有答案)一、选择题1、有效容量为128KB的Cache,每块16B,8路组相联。
字节地址为1234567H的单元调入该Cache,其tag应为()。
A.1234HB.2468HC.048DHD.12345H2、假定主存地址为32位,按字节编址,主存和Cache之间采用直接映射方式,主存块大小为4个字,每字32位,采用写回(Write Back)方式,则能存放4K字数据的Cache的总容量的位数至少是()。
A.146KB.147KC.148KD.158K3、为了表示无符号十进制整数,下列哪些是合法的8421BCD码?()I.01111001 Ⅱ.11010110 Ⅲ.00001100 Ⅳ.1000010lA.I、IⅡB.Ⅱ、ⅢC.I、ⅣD.I、Ⅱ、Ⅲ4、用海明码对长度为8位的数据进行检/纠错时,若能纠正一位错,则校验位数至少为()。
A.2B.3C.4D.55、若浮点数用补码表示,则判断运算结果为规格化数的方法是()。
A.阶符与数符相同,则为规格化数B.小数点后第一位为1,则为规格化数C.数符与小数点后第1位数字相异,则为规格化数D.数符与小数点后第1位数字相同,则为规格化数6、系统总线中的数据线、地址线、控制线是根据()来划分的。
A.总线所处的位置B.总线的传输方向C.总线传输的内容D.总线的材料7、总线的数据传输速率可按公式Q=Wf/N计算,其中Q为总线数据传输速率,W为总线数据宽度(总线位宽/8),f为总线时钟频率,N为完成一次数据传送所需的总线时钟周期个数。
若总线位宽为16位,总线时钟频率为8MHz,完成一次数据传送需2个总线时钟周期,则总线数据传输速率Q为()。
A.16Mbit/sB.8Mbit/sC.16MB/sD.8MB/s8、计算机()负责指令译码。
A.算术逻辑单元B.控制单元(或者操作码译码器)C.存储器电路D.输入/输出译码电路9、在计算机系统中,表明系统运行状态的部件是()。
循环结构(for循环、while循环)循环结构(for循环、while循环)1、含义:循环语句可以在满⾜循环条件的情况下,反复执⾏某⼀段代码,这段被重复执⾏的代码被称为循环体语句;当反复执⾏这个循环体时,需要在合适的时候把循环判断条件修改为false,从⽽结束循环,否则循环将⼀直执⾏下去,形成死循环。
2、分类:1、for循环2、while循环--do...while循环3、循环语句的组成①初始化语句:⼀条或者多条语句,这些语句完成⼀些初始化操作。
②判断条件语句:这是⼀个boolean 表达式,这个表达式能决定是否执⾏循环体。
③循环体语句:这个部分是循环体语句,也就是我们要多次做的事情。
④控制条件语句:这个部分在⼀次循环体结束后,下⼀次循环判断条件执⾏前执⾏。
通过⽤于控制循环条件中的变量,使得循环在合适的时候结束。
for循环1、for循环:语句格式:for(初始化语句;判断条件语句;控制条件语句){循环体语句;}2、执⾏流程:(1)执⾏初始化语句,只执⾏了⼀遍(2)执⾏判断条件语句,看其结果是true还是false如果是false,循环结束。
如果是true,继续执⾏。
(3)执⾏循环体语句 //注意:第3步是执⾏循环体,⽽不是控制条件语句(4)执⾏控制条件语句(5)回到(2)继续3、例:打印10⾏HelloWorld⽅法⼀:使⽤⽼⽅法public class ForDemo1 {public static void main(String[] args) {System.out.println("HelloWorld");System.out.println("HelloWorld");System.out.println("HelloWorld");System.out.println("HelloWorld");System.out.println("HelloWorld");System.out.println("HelloWorld");System.out.println("HelloWorld");System.out.println("HelloWorld");System.out.println("HelloWorld");System.out.println("HelloWorld");⽅法⼆:利⽤for循环public class ForDemo1 {public static void main(String[] args) {for(int i=1;i<=10;i++){System.out.println("HelloWorld");}}}程序解释:①int i=1; 初始化值的作⽤,因为我们要打印10句HelloWorld,从第⼀次开始,所以我们需要定义⼀个变量 int类型的变量去开始计数,表⽰第⼏次循环②i<=10; 条件判断语句,这个语句使⽤控制是否进⼊循环的条件③i++ 控制循环体中的条件的变化,在这⾥表⽰的是,每循环⼀次,i++4、使⽤for循环的注意事项:1、条件判断语句只能是boolean类型2、当循环体的语句只有⼀条的时候,可以省略⼤括号,如果循环体的语句有多条的时候,这时候需要添加⼤括号,如果不添加循环语句只针对第⼀条语句有效(建议,永远不要省略⼤括号)3、如果在⼩括号后加分号,默认有⼀个空语句体,后⾯的代码为正常的代码块,不参与循环4、初始化语句可以不在for循环中的⼩括号中体现,但是必须在使⽤之前定义好5、条件判断语句可以删除,但是删除之后,就没有了控制循环结束的条件,就变成了死循环6、控制条件语句删除之后,也变成了死循环,你可以删除,但是初始化的变量的值⼀定要在循环体中发⽣变化。
2021年清华大学计算机科学与技术专业《计算机组成原理》科目期末试卷A(有答案)一、选择题1、下列关于一地址指令的说法正确的是()。
A.只有一个操作数B.一定有两个操作数,其中一个是隐含的,完成功能(A)OP(ACC)C.如果有两个操作数,则两个操作数相同,完成功能(A)OP(A)D.可能有两个操作数,也可能只有一个操作数2、寄存器间接寻址方式中,操作数在()中。
A.通用寄存器B.堆栈C.主存单元D.指令本身3、一个浮点数N可以用下式表示:N=mr me,其中,e=rc g;m:尾数的值,包括尾数采用的码制和数制:e:阶码的值,一般采用移码或补码,整数;Tm:尾数的基;re:阶码的基;p:尾数长度,这里的p不是指尾数的:进制位数,当ra=16时,每4个二进制位表示一位尾数;q:阶码长度,由于阶码的基通常为2,因此,在一般情况下,q就是阶码部分的二进制位数。
研究浮点数表示方式的主要目的是用尽量短的字长(主要是阶码字长q和尾数字长的和)实现尽可能大的表述范围和尽可能高的表数精度。
根据这一目的,上述6个参数中只有3个参数是浮点数表示方式要研究的对象,它们是()。
A.m、e、rmB. rm、e、rmC.re、p、qD. rm、p、q4、某数采用IEEE754标准中的单精度浮点数格式表示为C6400000H,则该数的值是()。
A.-1.5×213B.-1.5×212C.-0.5×213D.-0.5×2125、下列为8位移码机器数[x]移,当求[-x]移时,()将会发生溢出。
A.11111111B.00000000C.10000000D.011l1l116、某机器字长32位,存储容量64MB,若按字编址,它的寻址范围是()。
A.8MB.16MBC.16MD.8MB7、关于LRU算法,以下论述正确的是()。
A.LRU算法替换掉那些在Cache中驻留时间最长且未被引用的块B.LRU算法替换掉那些在Cache中驻留时间最短且未被引用的块C.LRU算法替换掉那些在Cache中驻留时间最长且仍在引用的块D.LRU算法替换掉那些在Cache中驻留时间最短且仍在引用的块8、CPU中不包括()。
2021年湖南城市学院计算机科学与技术专业《计算机组成原理》科目期末试卷A(有答案)一、选择题1、某计算机主存空间为4GB,字长为32位,按字节编址,采用32位定长指令字格式。
若指令按字边界对齐存放,则程序计数器(PC)和指令寄存器(IR)的位数至少分别是()。
A.30,30B.30,32C.32,30D.32,322、设指令由取指、分析、执行3个子部件完成,每个子部件的工作周期均为At,采用常规标量流水线处理器。
若连续执行l0条指令,则需要的时间为()。
A.8∆tB.10∆tC.12∆tD.14∆t3、加法器采用先行进位的根本目的是()。
A.优化加法器的结构B.快速传递进位信号C.增强加法器的功能D.以上都不是4、串行运算器结构简单,其运算规律是()。
A.由低位到高位先行进行进位运算B.由低位到高位先行进行借位运算C.由低位到高位逐位运算D.由高位到低位逐位运算5、在C语言程序中,下列表达式中值为True的有()。
I.123456789=(int)(float)l23456789Ⅱ.123456==(int)(float)1234561Ⅲ.123456789-(int(double)123456789A.仅I、ⅡB. 仅I、ⅢC.仅Ⅱ、ⅢD. I、Ⅱ、Ⅲ、6、在一个容量为l28KB的SRAM存储器芯片上,按字长32位编址,其地址范围可从0000H到()。
A.3HB.7HC.7HD.3fH7、某一计算机采用主存Cache存储层次结构,主存容量有8个块,Cache容量有4个块,采取直接映射方式。
若主存块地址流为0,1,2,5,4,6,4,7,1,2,4,1,3,7,2,一开始Cache为空,此期间Cache的命中率为()。
A.13.3%B.20%C.26.7%D.33.3%8、已知计算机A的时钟频率为800MHz,假定某程序在计算机A上运行需要12s。
现在硬件设计人员想设计计算机B,希望该程序在B上的运行时间能缩短为8s,使用新技术后可使B的时钟频率大幅度提高,但在B上运行该程序所需要的时钟周期数为在A上的1.5倍。