Crypto入门-流密码初探
Crypto入门-流密码初探
基础知识
LCG
线性同余生成器,由线性函数生成随机数序列。标准的LCG的生成序列满足下列递推式:
其中
攻破Linux Glibc的rand()
函数(TYPE_0
)
当使用TYPE_0
时,采用的是标准LCG,生成公式为:
直接求逆元得:
LFSR
线性反馈移位寄存器,由一个移位寄存器和一个反馈函数组成,反馈函数为一个线性函数。进行密钥流生成时,每次从移位寄存器中移出一位作为当前的结果,而移入的位由反馈函数对寄存器中的某些位进行计算来确定。
为使LFSR获得最大周期,即
得到
这种周期最大的序列称为“m序列”。
设某LFSR长度为
例如
解方程组得:
可求得反馈函数为:
攻破Linux Glibc的rand()
函数(TYPE_3
)
随机数产生方法:状态数组buf
中的fptr
和rptr
指向的数字相加,再除以TYPE_3
的情况下,buf
长度为34,且fptr
与rptr
分别为当前下标减
但因移入状态数组中的数不是产生后的随机数,而是右移
简单Demo:
c
1 |
|
RC4
略。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 The Blog of Monoceros406!