当前位置:文档之家› 密码学简答题及计算题

密码学简答题及计算题

简答题及计算题
1.RSA 算法中n =11413,e =7467,密文是5859,利用分解11413=101×113,求明文。

解:10111311413n p q =⨯=⨯=
()(1)(1)(1001)(1131)11088n p q ϕ=--=--=
显然,公钥e=7467,满足1<e <()n ϕ,且满足gcd(,())1e n ϕ=,通过公式1mod11088d e ⨯≡求出1mod ()3d e n ϕ-≡=,
由解密算法mod d m c n ≡得3mod 5859mod114131415d m c n ≡==
2.用C 语言编写欧几里德算法的程序。

#include<stdio.h>
unsigned int Gcd( unsigned int M, unsigned int N )
{
unsigned int Rem;
while( N > 0 )
{
Rem = M % N;
M = N;
N = Rem;
}
return M;
}
void main()
{
int temp;
int a,b;
scanf("%d",&a);
scanf("%d",&b);
printf("the greatest common factor of %d and %d is ",a,b); printf("%d\n",Gcd(a,b));
}
3.用欧几里德算法计算gcd (1024,888)。

1024=888*1+136 gcd (888,136)
888=136*6+72 gcd (136,72)
136=72*1+64 gcd (72,64)
72=64*1+8 gcd (64,8)
64=8*8+0 gcd (8,0)
gcd (1024,888)=8
4.利用欧拉定理可简化大指数的幂运算,计算21000 000 mod99
gcd(2,99)=1
φ(99)=φ(9*11)=φ(32*11)=9*(1-1/3)*11=66
1000000=16666*60+40
21000 000 mod99≡216666*60+40 mod99≡240 mod99≡10244 mod99≡344mod99≡672mod99≡34
5.设Z2[x]的两个元a(x)=2x4+2,b(x)=x5+2,求gcd[a(x),b(x)]=g(x),并找出s(x),t(x)使g(x)=s(x)a(x)+t(x)b(x)。

x5+2≡2x(2x4+2)+(2x+2)
2x4+2≡(x3+2x2+x+2)(2x+2)+1
1≡2x4+2-(x3+2x2+x+2)(2x+2)
≡2x4+2-(x3+2x2+x+2)[(x5+2)-2x(2x4+2)]
≡(2x4+4x3+2x2+4x+1)(2x4+2)+(2x3+x2+2x+1)(x5+2)
≡(2x4+x3+2x2+x+1)(2x4+2)+(2x3+x2+2x+1)(x5+2)
所以,g(x)=1,s(x)=2x4+x3+2x2+x+1,t(x)=2x3+x2+2x+1。

6.(韩信点兵问题)有兵一队,若列成五行纵队,则末行一人;成六行纵队,则末行五人;成七行纵队,则末行四人;成十一行纵队,则末行十人,求兵数。

x≡1mod5
x≡5mod6
x≡4mod7
x≡10mod11
m1 =5, m2 =6,m3 =7,m4 =11
a1 =1, a2 =5,a3 =4,a4 =10
M=5*6*7*11=2310
M1 =6*7*11=462, M2 =5*7*11=385, M3 =5*6*11=330,M4 =5*6*7=210
Mb≡1modm
462b1≡1mod5 b1≡3mod5
385b2≡1mod6 b2≡1mod6
330b3≡1mod7 b3≡1mod7
210b4≡1mod11 b4≡1mod11
1*3*462+5*1*385+4*1*330+1*10*210≡2111mod2310
兵数2111mod2310。

7.求置换
的逆置换。

6==(1 5 6 8 3 7 4 2)
6的逆==(1 2 4 7 3 8 6 5)
8.用维吉尼亚密码加密明文“please keep this message in secret”其中使用的密钥为“computer”试求其密文。

RZQPMXOVGFWCLQVUGMVYBRJGQDTN
9.题目:已知一下密文是由仿射密码得到的试求其明文。

“FMXVEDKAPHFERBNDKRXRSREFMORUDSDKDVSHVUFEDKAPRKDLYEVLRHHRH”
解答:统计得出:
A:2 I:0 Q:0 Y:1
B:1 J:0 R:8 Z:0
C:0 K:5 S:3
D:7 L:2 T:0
E:5 M:2 U:2
F:4 N:1 V:4
G:0 O:1 W:0
H:5 P:2 X:2
根据统计规律我们猜想R是e加密得到的,D是t加密得到的,因为t,e出现频率较高,得到同余方程组
(4a+b)mod26=17
(19a+b)mod26=13
得到a=6
b=19仿射密码要求gcd(a,26)=1,所以此解错误。

再次猜想R是e加密的得到的,k是t加密得到的,从而得到a=3,b=5,将此解带入密文测试发现k=(3,5)正确,推出解密函数d(y)=9y-19 得到解密结果:algorithmsarequitegeneraldefinitionsofarithmeticprocesses
1.简述SHA1算法。

答:SHA1也叫安全哈希算法(Secure Hash Algorithm)主要适用于数字签名标准(Digital Signature Standard DSS)里面定义的数字签名算法(Digital Signature Algorithm DSA)。

对于长度小于2^64位的消息,SHA1会产生一个160位的消息摘要。

当接收到消息的时候,这个消息摘要可以用来验证数据的完整性。

在传输的过程中,数据很可能会发生变化,那么这时候就会产生不同的消息摘要。

SHA1有如下特性:不可以从消息摘要中复原信息;两个不同的消息不会产生同样的消息摘要。

2.简述HMAC算法。

答:HMAC是密钥相关的哈希运算消息认证码(keyed-Hash Message Authentication Code),HMAC运算利用哈希算法,以一个密钥和一个消息为输入,生成一个消息摘要作为输出。

HMAC引擎提供HMAC运算功能,发挥两方面的作用:
a)验证TPM接受的授权数据和认证数据;
b)确认TPM接受到的命令请求是已授权的请求,并且,命令在传送的过程中没有被改动过。

3.简述序列密码算法和分组密码算法的不同。

答: S盒是DES中唯一的非线性部分,DES的安全强度主要取决于S盒的安全强度。

DES中8个S盒,输入均为6位,输出为4位。

有以下特点:
①具有良好的非线性,即输出地每一个比特与全部输入比特有关;
②每一行包括所有16种4位二进制。

③两个输入相差1bit比特时,输出相差2bit。

④如果两个输入刚好在中间2个比特上不同,则输出至少有2个比特不同。

⑤如果两个输入前2位不同而最后2位相同,则输出一定不同。

⑥相差6bit的输入共32对,在这32对中有不超过8对的输出相同。

5.简述AES的子密钥生成过程
答:AES首先将初始密钥输入到一个4*4矩阵中。

这个4*4矩阵的每一列的4个字节组成一个字,矩阵4列的4个字依次命名为w[0]w[1]w[2]和w[3]。

它们构成了一个以字为单位的数组w。

接着,对w数组扩充40个新列,构成总共44列的扩展密码数组。

新列以如下的递归方式产生:
(1)如果i不是4的倍数,那么第i列由如下等式确定:
w[i]=w[i-4] ⊕w[i-1]
(2)如果i是4的倍数,那么第i列由如下等式确定:
w[i]=w[i-4] ⊕T(w[i-1])
其中,T是一个复杂的函数。

函数T由三个部分组成:自循环、字节代换和轮常量异或,这三部分的作用分别如下:
(1)字循环:将1个字中的4个字节循环左移1个字节。

(2)字节代换:对字循环的结果使用S盒进行字节代换。

(3)轮常量抑或:将前两步的结果同轮常量Rcon[j]进行异或,其中J表示轮数。

6.简述DES与AES的相同之处
答:①二者的轮函数都是由3层构成,非线性层、线性混合层、子密钥异或,只是顺序不同。

②AES的子密钥异或对应于DES中S盒之间的子密钥异或。

③AES的列混合运算的目的是让不同的字节相互影响,和DES中F函数的输
出与左边一半数据相加也有类似的效果。

④AES的非线性运算是字节代换,对应于DES中唯一的非线性运算S盒。

⑤行移位运算保证了每一行的字节不仅仅影响其他行对应的字节,而且影响其他行所有的字节,这与DES中置换P相似。

相关主题