Processing math: 100%

密码编码学与网络安全第七版习题8.2

这道题是密码学的作业,开始不会写,答案只有结果而没有过程,后来查了一些资料才算是搞明白了。

题目如下:

(a) 下述的伪随机数发生器可获得的最大周期是多少?

Xn+1=(aXn)mod24

(b) 这时 a 为多少?

(c) 对种子有什么要求?

解答如下:

(a)#

首先引入这样一个结论:对任意的奇数a与正整数n,有:a2n1(mod2n+2)。用归纳法证明这个结论:

  1. n=1时,存在整数bc,使得

    a2n=(2b+1)2=4b(b+1)+1=23c+11(mod23)

  2. 假设当n=k时,命题成立,即

    a2k1(mod2k+2)

    则存在整数c,使得

    a2k=2k+2c+1

    n=k+1时,存在整数kb,使得

    a2k+1=(2k+2c+1)2=22k+4c2+2·2k+2c+1=2k+3c(2k+1c+1)+11(mod2k+3)

    即当n=k+1时,命题成立。

由1,2可得,该命题成立。

a24不互素,即a为偶数,令a=2k,则

a4=16k40(mod24)

从而

0=Xn+4a4Xn(mod24)

产生的第四个数之后全为0,所以a24互素。

又因为

a2n1(mod2n+2)

所以

a242=a41(mod24)

从而

a4XnXn(mod24)

Xn+4=Xn

所以最大周期为4。

(b)#

由(a)可知,a为奇数。

经计算,a=7,9,15时,周期为2。

a=3,5,11,13时,周期为4。

(c)#

种子必须为奇数,否则周期会不大于2。

作者:MeanCoder

出处:https://www.cnblogs.com/meancoder/p/cryptography-and-network-security-problem-8-2.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   MeanCoder  阅读(1273)  评论(0编辑  收藏  举报
编辑推荐:
· 继承的思维:从思维模式到架构设计的深度解析
· 如何在 .NET 中 使用 ANTLR4
· 后端思维之高并发处理方案
· 理解Rust引用及其生命周期标识(下)
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
阅读排行:
· 35岁程序员的中年求职记:四次碰壁后的深度反思
· 当职场成战场:降职、阴谋与一场硬碰硬的抗争
· 用99元买的服务器搭一套CI/CD系统
· Excel百万数据如何快速导入?
· ShadowSql之.net sql拼写神器
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示