stein算法求最大公约数c语言,密码学基础及应用1-中国大学mooc-题库零氪

第一章 整数的可除性

作业 1.1 20191013

1、请使用欧几里德算法计算最大公约数,并将其表示为两数的整系数线性组合: 3) (-1124, 1213). 4) (1281, 2019).

作业1.3 20191013

1、stein算法计算最大公约数: 1613,-3589

作业 1.4 20191013

1、求解方程:984x+1038y=24

作业 1.5 20191013

1、请将12345和24531进行整数唯一分解

第二章 同余

作业 2.1 20191027

1、1). 判断整数 2019040820190419 是否被 9 整除? 2). 今天是星期五,问第 2^{20200319} 天是星期几? 3). 明文m=7,请用RSA密码算法加密m,并解密。取p=5,q=11,e=3,d=27。

作业 2.2 完全剩余系

1、1). 构造 mod 19 的最小非负完全剩余系,最小正完全剩余系,绝对值最小完全剩余系,偶数组成的完全剩余系,奇数组成的完全剩余系.

作业 2.3 简化剩余系

1、1). 构造 mod 19 的简化剩余系及乘法表(例 2.3.10). 2). 设 a 是与 32760 互素的整数. 证明: a^{12} 同余于 1 mod 32760. 3). 计算如下整数 m 的欧拉函数: a) m = 19. b) m = 2017. c) m = 2019. d) m = 888*2018.

作业 2.4 欧拉定理

1、1).请利用欧拉定理或费马小定理计算 (1)13^123 (mod 117), (2)79^301 (mod 455) 2). 设 p = 19. 计算序列 u = { u_k = a^k mod p | k = 1, 2, ..} 的最小周期 (参见定义 B.0.1), 其中 a = 2, 3 , 5, 7.

作业 2.5 模重复平方法

1、1). 设 n = 667. e = 13. d = 237. 对于 m = 199, 计算 c = m^e mod n; 再计算 m' = c^d mod n. 最后比较 m' 与 m.

第三章 同余式

3.1 作业 一次同余式

1、求解:123x≡456 (mod 2020)

3.2 作业 孙子定理

1、1). 用孙子定理计算 79^301 (mod 455) 2). 用孙子定理求解 123 x≡456 (mod 2020)

3.3 作业 古典密码

1、1.用仿射密码加密消息“good luck”,加密密钥为(5,3)。请完成: (1)写出计算过程和得到的密文; (2)计算解密的密钥; (3)对计算得到的密文进行解密,还原出明文。 2.hill密码分组大小m=2,加密密钥(3, 5;20,19)。(分号表示换行) (1)请加密“good” (2)请写出解密密钥 (3)请解密你刚刚加密的密文

3.4 作业 RSA

1、已知RSA密码体制的公钥为n=187,e=7,带发送的消息为“5”,试将该消息加密后发送。对应的解密密钥应该是什么?假设你截获的密文,请通过因子分解n破译该密码,并对密文解密。

第六章 素性检验

6.1 强伪素数 作业

1、113是强伪素数吗? 如果是,要求可能是素数的概率超过90%。

第五章 原根与指标

5.1 作业指数

1、设 p = 17. 求出模 p 的最小正简化剩余系各元素的指数. 设 m = 21. 求出模 m 的最小正简化剩余系各元素的指数.

5.2 作业指数2

1、设 m = 191. 设 g=19, a=g^{10}, b = g^{19}. 分别计算 ord_m(g), ord_m(a), ord_m(b), ord_m(a*b).

5.3 作业原根

1、设 p = 19. 求模p和p^2的所有原根.

5.5 作业 离散对数

1、1)5*x^6≡11 (mod 43) (4)6*x^5≡11 (mod 43)

代数结构

5.1 代数结构

1、

64335.html

5.2 群

1、(Z,*)是群吗?其中Z为整数集合,*定义为:任意a,b∈Z,a*b=6-2a-2b-ab

5.2 子群

1、1.请写出群(Z15,+15)的各子群。

5.4 置换群

1、请写出4元对称群S_4的所有元素,每个元素的阶和所有4阶子群。

5.5 密码学计算

1、若仿射密码定义在Z_m上,请计算其密钥空间大小。其中m = 30,100和1225。

7.1 AES计算

1、AES的S盒中,1A将映射到A2,请给出映射结果计算的中间过程

7.1 AES计算2

1、再进行列混淆计算时,有一列为(A7 F1 BC 65)^T,(^T表转置),请计算列混淆后该列第一个和最后一个值分别是多少

8.1 ECC计算

1、椭圆曲线E_13(1,1)上实现ElGamal加密算法,基点G=(5,1),A选取私钥XA=5,请计算A的公钥YA

巫玲老师的学生的考试答卷提交处

1、1

2、2

3、作业题3

张劲峰老师的学生的考试答卷提交处

1、1

2、2

3、3

期末考试

期末考试

1、一种换位式密码的加密过程描述为:按行记录、按列读出。如设列为4,要加密明文为:“canyouunderstandthis”,首先将明文按4个字符一行分组排列:

64335.html 得到密文为“codttaueahnurniynsds”。 (1)写出此加密算法的加密公式(4分)。 (2)写出此加密算法的解密公式(3分)。 (3)请将“wyusiocssucxhsex”解密。(3分)

A、这里的答案选我

B、这里只负责出题目

C、返回去作业里面

D、附件的形式提交你的答案照片

2、Alice设计了一种流密码的密钥发生器,密钥序列xk按如下线性递归方式产生: xn+1 = (axn + b) mod m,(a,m) = 1, 已知某次加密使用的一段密钥序列为15,9,13,16,14,4 …请计算密钥发生器的参数。(10分)

A、这里只负责出题目

B、返回去作业那里

C、这里的答案选我

D、附件的形式提交你的图片

3、Alice设计了一种密码,把英文明文按2个字母分组,每个字母A~Z依次对应自然数0~25,如“wish you success”被转换为

64335.html,设每个分组的第一个数字是x,第二个数字是y,加密公式为:

64335.html 。如“wi”被转换成(22,8),带入加密公式被加密为(4,12),即密文为“em”。最终,“wish you success”加密成:“magrakegyqkicc”。 (1)计算解密公式;(4分) (2)写出加密“goodwork”的计算过程和得到的密文;(3分) (3)对密文“pshhiz”进行解密。(3分)

A、这里只负责出题目

B、这里的答案选我

C、返回去作业那里

D、附件的形式提交你的图片

4、设ElGamal体制的公用素数q=17,本原根a=3。若Alice的公钥YA=2,Bob截获了发给A的密文(4,5),请根据离散对数表计算Alice应该收到的明文M。

64335.html

A、这里的答案选我

B、返回去作业那里

C、这里的答案选我

D、附件的形式提交你的图片

5、Alice使用RSA公钥为n=253,e=3,Bob截获了发送给Alice的密文C=48,试通过分解n破译该密码,解密出明文M。

A、返回去作业那里

B、附件的形式提交你的图片

C、这里的答案选我

D、这里的答案选我

6、有限域GF(23)上有椭圆曲线Z_23(1,1),Alice在其上建立ElGamal算法,取基点P=(0,1),公钥K=(7,11),Bob给Alice发消息M=(3,13),选择随机数r=2,请计算Alice收到的密文。 已知椭圆曲线E_ p(a,b)上,若点P,Q,R∈E,P=(x1,y1),Q=(x2,y2),R=(x3,y3),R=P+Q,则有:x1+x2+x3≡k^2 mod p和y3+y1≡k(x1-x3) mod p;当P≠Q时k=(y1-y2)/(x1-x2)(mod p),当P=Q时k=(3x1^2+a)/2y1(mod p)。 ElGamal算法: C1=rP,C2=M+rK。

7、AES中每轮加密的一个重要环节为列混淆,每列计算公式为

64335.html 若输入列为(D4 BF 5D 30)^T,请计算第二个输出数字b1的值。

8、AES中每轮加密的第一个环节为字节代换,首先需要将每个字节映射为其在有限域GF(2^8)的乘法逆(生成多项式为0x11B),请计算输入值为{0x1C}时的逆元。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是求两个数的最大公约数C语言Stein算法的代码及解释: ```c #include <stdio.h> int gcd(int a, int b) { if (a == 0) return b; if (b == 0) return a; int k = 0; while ((a & 1) == 0 && (b & 1) == 0) { a >>= 1; b >>= 1; k++; } while ((a & 1) == 0) { a >>= 1; } while (b != 0) { while ((b & 1) == 0) { b >>= 1; } if (a > b) { int temp = a; a = b; b = temp; } b -= a; } return a << k; } int main() { int a, b; printf("请输入两个整数:"); scanf("%d %d", &a, &b); printf("它们的最大公约数是:%d\n", gcd(a, b)); return 0; } ``` 解释: 这是使用 Stein 算法求两个数的最大公约数的 C 语言代码。Stein 算法一种比较高效的算法,它可以在不使用除法和模运算的情况下求出两个数的最大公约数。 首先,我们需要判断两个数是否为 0,如果其中一个数为 0,那么另一个数就是它们的最大公约数。 然后,我们需要将两个数都除以 2 直到它们都变成奇数。这样做的原因是,如果两个数都是偶数,那么它们的最大公约数也一定是偶数,因此我们可以将它们都除以 2,直到它们都变成奇数。 接下来,我们使用辗转相减法来求两个数的最大公约数。具体来说,我们先将其中较小的数减去较大的数,然后不断重复这个过程,直到其中一个数变成 0。这样做的原因是,如果两个数的最大公约数是 d,那么它们一定可以表示成 d * x 和 d * y 的形,其中 x 和 y 都是整数。因此,我们可以将其中较大的数减去较小的数,直到它们相等,然后再将它们中的一个数减去另一个数,直到其中一个数变成 0。这样做的结果是,我们得到了两个数的最大公约数的两倍,因此最后需要将它乘以 2 的 k 次方,其中 k 是我们在一开始将两个数都除以 2 的次数。 最后,我们可以将这个算法封装成一个函数,然后在主函数中调用它来求两个数的最大公约数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值