- 1、本文档共3页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
流密码加密原理
流密码加密实验
【实验原理】
流密码(stream cipher)也称为序列密码,每次加密处理数据流的一位或一个字节,加解密使
用相同的密钥,是对称密码算法的一种。1949 年Shannon 证明只有一次一密密码体制是绝
对安全的,为流密码技术的研究提供了强大的支持,一次一密的密码方案是流密码的雏形。
流密码的基本思想是利用密钥K 产生一个密钥流k k …k 对明文流M=m m …m 进行如下
1 2 n 1 2 n
加密:C=c c …c =E (m )E (m )…E (m )。若流密码所使用的是真正随机产生的、与消息
1 2 n k1 1 k2 2 kn n
流长度相同的密钥流,则此时的流密码就是一次一密的密码体制。
流密码分为同步流密码和自同步流密码两种。同步流密码的密钥流的产生独立于明文和密
文;自同步流密码的密钥流的产生与密钥和已经产生的固定数量的密文字符有关,即是一种
有记忆变换的序列密码。
RC4
RC4
一、RRCC44 流密码算法
RC4 是1987 年Ron Rivest 为RSA 公司设计的一种流密码,是一个面向字节操作、具有
密钥长度可变特性的流密码,是目前为数不多的公开的流密码算法。目前的RC4 至少使用
128 为的密钥。RC4 的算法可简单描述为:对于n 位长的字,有共N=2n 个可能的内部置换
n
状态矢量S=S[0],S[1],…,S[N-1],这些状态是保密的。密钥流K 由S 中的2 个元素按一定方
式选出一个元素而生成,每生成一个密钥值,S 中的元素就重新置换一次,自始至终置换后
的S 包含从0 到N-1 的所有n 比特数。
RC4 有两个主要算法:密钥调度算法KSA 和伪随机数生成算法PRGA。KSA 算法的作用是
将一个随机密钥变换成一个初始置换,及相当于初始化状态矢量S,然后PRGA 利用KSA
生成的初始置换生成一个伪随机数出序列。
密钥调度算法KSA 的算法描述如下:
fori=0 to N-1 do
S[i]=i;
j=0;
fori=0 to N-1 do
j=(j+S[i]+K[i mod L]) mod N;
swap(S[i],S[j]);
初始化时,S 中元素的值被设置为0 到N-1,密钥长度为L 个字节,从S[0]到S[N-1]对于每
个S[i]根据有密钥K 确定的方案,将S[i]置换为S 中的另一个元素。
伪随机数生成算法PRGA 的算法描述如下:
i=0;
j=0;
while(true)
i=(i+1) mod N;
j=(j+S[i])mod N;
swap(S[i],s[j]);
output k=S[(S[i]+S[j])mod N];
PRGA 算法主要完成密钥流的生成,从S[0]到S[N-1],对每个S[i],根据当前S 的值,将S[i]
与S 中的另一个元素置换,,当S[N-1]完成置换后,操作再从S[0]开始重复。
Shell2us Fuck Gruop -
Shell2us Fuck Gruop -
SShheellll22uuss FFuucckk GGrruuoopp 基础教学篇--安全篇
加密时将K 值与下一个明文字节异或;解密时将K 值与下一密文字节异或。
LFSR
LFSR
二、基于LLFFSSRR 的流密码
线性反馈移位寄存器(Linear Feedback Shift Register,LFSR)是产生密钥流最重要的部件。
如图1.1.3
文档评论(0)