1.AES算法与3DES算法的区别与联系?
正确答案:

区别:3DES算法软件运行相对较慢。原始的DEA是20世紀70年代中期为硬件实现设计的。没有高效的软件代码。3DES
迭代轮数是DEA的3倍,因此更慢。DEA和3DES都使用64比特大小的分组。出于效率和安全原因,需要更大的分组。
AES和3DES等同或者更高的安全强度,并且效率有显著提高。分组大小为128比特的分组密码。支持密钥长度为128、192
和256比特。所需存储空间更少,软硬件适配度更好,以及灵活性更高等。 联系:都是对称加密算法。
预计3DES与高级加密标准(AES)将作为FIPS批准的算法共存,并允许3DES逐步过渡到AES。最终AES将取代3DES,但是这个过程将花费很多年的时间。NIST预言在可预见的将来3DES仍将是允许政府的算法。

2.AES算法的加密算法基本步骤有哪些?为什么要从轮密钥加开始?
正确答案:

AES对于加密和解密,密码都是从轮密钥加开始,接下来经过9轮迭代,每轮包含4个步骤,最后进行一轮包含3个步骤的第10轮迭代。
(1)只有轮密钥加步骤使用了密钥。因此,密码在开始和结束的时候进行轮密钥加步骤。对于任何其他步骤,如果在开始或者结束处应用,都可以在不知道密钥的情况下进行反向操作,并且不会增强安全。相当于没有作用。
(2)轮密钥加步骤本身并不强大。另外3个步骤一起打乱了数据比特,但是因为没有使用密钥,它们本身不提供安全。将这个密码用于先对分组做异或加密(轮密钥加)操作。再打乱这个分组(另外3个步骤),再做异或加密,依次类推。

3.随机数列有哪些性质?应用中需要同时满足这些性质吗?
正确答案:

随机数列有随机性和不可预测性。
1).随机性。随机数列生成过程中要求这一系列数据在严格统计意义上来说是要随机的。验证一个序列数是否是随机的标准:
均匀分布:在一串比特序列中比特位的分布要均匀。1和0出现的频率必须大致相同。 独立:在同一序列上,没有一个数字能影响和干涉其他数字。
2).不可预测性:一些应用,例如相互认证和会话密钥生成,并不要求数列是统计上随机,但是这个数列上连续数位应该是不可预测的。在一个真正的随机数列中,每一个数字在统计上将会独立于其他数字,因此这个数字是不可预测的。

4.简述真随机数和伪随机数区别与联系,并举例说明它们的应用。
正确答案:

区别:伪随机数:密码应用程序通常利用了随机数生成的算法技术,生成伪随机数字。算法具有确定性的特点,因此产生的数列不具有统计上的随机性,可再现。
真随机数:真随机数发生器将一个有效的随机源作为输入端;这个源被称为熵源。一些源的结合,作为一个算法的输入端来产生随机二进制数输出。因此是不可再现的。
联系:它们产生出来的数列都可以通过很多合理的随机性测试。

5.伪随机数发生器PRNG和伪随机函数( PRF)的区别与联系。
正确答案:

伪随机数发生器:一种用来生产一个开路型(无需持续驱动)比特流的算法被称为PRNG。常见应用是作为对称流密码的输入。 伪随机函数(
PRF):PRF被用来产生固定长度的伪随机比特串。例如对称的加密密钥和随机数。典型的PRF采用种子加上上下文中特定的值作为输入,如用户名ID和应用程序ID,很多关于PRF的例子都贯穿全书。
除了产生的比特数不同,PRNG和PRF之间没有区别。相同的算法能被双方所应用。
两者都需要一个种子,都必须呈现出随机性和不可预测性,另外,一个PRNG应用程序也可以采用上下文特定的输入。

6.密钥流
正确答案:

密钥输入到一个伪随机字节生成器,产生一个表面随机的8比特数据流。如果不知道输入密钥,伪随机流就不可预测的,而且它具有表面上随机的性质。这个生成器的输出称为密钥流。
密钥流应该尽可能地接近真随机数流的性质。例如,1和0的数目应该近似相等。如果将密钥流视作字节流,那么字节的256种可能值出现的频率应该近似相等。密钥流表现得越随机,密文就越随机化,密码破译就越困难。

7.流密码
正确答案:

流密码连续处理输入元素,在运行过程中,一次产生一个输出元素。尽管分组密码普遍得多,但对于一些特定的应用,使用流密码更合适。典型的流密码一次加密一个字节的明文,尽管流密码可能设计成一次操作一个比特或者比字节大的单位。

8.什么是一次一密?为什么流密码只能一次一密?
正确答案:

两个明文使用同一密钥进行流密码加密,密码破译会非常容易,因为这两个密文流进行异或,结果就是原始明文的异或值。如果明文是文本字符串、信用号或者其他已知其性质的字节流,密码破解可能会成功。

3des密钥长度32位 3des有效密钥长度_分组密码

A ⊕ B=C ⊕ D 若知道三个,第4个就可以算出来了。

9.3DES算法与RC4相比各有何优势,在你开发的应用中,应该怎么选择它们之一。
正确答案:

分组密码优点:可重复使用密钥,但流密码一次一密 如果伪随机数生成器设计合理,对同样的密钥长度,流密码和分组密码一样安全。
流密码的主要优点:比分组密码更快,且用更少的代码。RC4能用仅仅几行代码实现。
选择方法:对于需要加密/解密数据流的应用,比如在数据通信信道或浏览器/网络链路上,流密码也许是更好的选择。
对于处理数据分组的应用,比如文件传递、电子邮件和数据库,分组密码可能更合适。

10.为什么一般的加密算法都可构造PRNG算法?请用DES算法构造一种PRNG算法,作图描述。
正确答案:

加密算法加密一个数据可生成随机数:如:计数器不同值加密可生成一些随机数。 密码算法起了一个随机化输入的作用,这也是密码算法所需要的。
如:若一个对称分组密码产生了具有特定模式(非随机化)的密文,那么它能对密码分析学有帮助。 因此,密码算法能够作为PRNG的核心。
三种密码算法经常被用来创造PRNG: 对称的分组密码;非对称的密码;散列函数和消息认证码。

11.请用任意编程语言编程实现RC4算法。要求贴出程序源代码,并展示加密解密实验的截图。
正确答案:

i,  j  =0;
while (true)
i = (i + 1) mod 256;
j = (j + S[i]) mod 256;
Swap  (S(i] ,  S[j]);
t = (S[i] + S[j]) mod 256;
k = S[t];