流密码与分组密码编程

流密码与分组密码编程

ID:47190181

大小:38.86 KB

页数:7页

时间:2019-08-18

流密码与分组密码编程_第1页
流密码与分组密码编程_第2页
流密码与分组密码编程_第3页
流密码与分组密码编程_第4页
流密码与分组密码编程_第5页
资源描述:

《流密码与分组密码编程》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、上机一:流密码与分组密码编程【上机目的】熟悉流密码和分组密码加密/解密算法的基本原理,通过编程/开源代码分析分别了解一种标准流密码算法和一种标准分组密码算法的运行原理。【上机环境】1、硬件PC机一台。2、系统配置:操作系统windowsXP以上。3、编程语言:C/C++/C#/Java/Python【上机内容及要求】1、分别利用RC4算法(或其它任一种标准流密码算法)和DES算法(或AES算法等其它任一种标准分组密码算法)对数据进行加解密操作2、代码分析及注释3、代码调试4、代码修改及测试(选做)备注:可借鉴网上相关算法的开源代码进行编程实现,编程语言不限。【上机报告】1、提交关键功能有注释

2、的源码。2、提交运行测试结果(运行截图及说明)。3、运行测试结果分析。4、上机总结(任务完成情况、出现或待解决的问题、收获、体会等)。流密码流密码就是使用较短的一串数字(叫它密钥吧),来生成无限长的伪随机密码流,当然事实上只需要生成和明文长度一样的密码流就够了。一个非常简单的流密码算法是,用6个比特位101100做密钥,将它不断重复得到密码流101100101100101100....直到和明文长度相等,然后将密码流和明文“相加”就得到密文了,解密就是将这个密码流和密文“相加”。流密码算法有个特殊的名称——维吉尼亚密码,当然这里密钥长度可以不是6。用较短的密钥产生无限长的密码流的方法非常多,

3、其中有一种就叫做RC4。把明文的信息限制在ascii码字符集内(它已经能表示所有的英文资料了哈哈),每个字符是一个比特,占8位。假设明文是abc,a、b、c的ascii值分别为97、98、99。二进制形式为01100001、01100010、01100011。密钥流和明文长度一样,假设是sdf,同样可以得到二进制流01110011、01100100、01100110,让他们在对应位做异或运算就可以得到密文了,c语言有^运算符来实现“相加”的操作。我们就直接对字符进行“相加”即a^s,b^d,c^f。得到的结果的二进制形式为00010010、00000110、00000101,它们分别表示as

4、cii码值为18、6、5的字符RC4用两步来生成密码流首先你指定一个短的密码,储存在key[MAX]数组里,还有一个数组S[256],令S[i]=i。然后利用数组key来对数组S做一个置换,也就是对S数组里的数重新排列,排列算法为forifrom0to255S[i]:=iendforj:=0forifrom0to255j:=(j+S[i]+key[imodkeylength])mod256swapvaluesofS[i]andS[j]endfor第二步利用上面重新排列的数组S来产生任意长度的密钥流,算法为i:=0j:=0whileGeneratingOutput:i:=(i+1)mod256

5、j:=(j+S[i])mod256swapvaluesofS[i]andS[j]K:=S[(S[i]+S[j])mod256]outputKendwhileoutputK一次产生一字符长度(8bit)的密钥流数据,一直循环直到密码流和明文长度一样为止。产生密钥流之后,对信息进行加密和解密就只是做个“相加”的运算。RC4算法的特点是算法简单,运行速度快,而且密钥长度是可变的,可变范围为1-256字节(8-2048比特),在如今技术支持的前提下,当密钥长度为128比特时,用暴力法搜索密钥已经不太可行,所以可以预见RC4的密钥范围任然可以在今后相当长的时间里抵御暴力搜索密钥的攻击。实际上,如今也没

6、有找到对于128bit密钥长度的RC4加密算法的有效攻击方法。在介绍RC4算法原理之前,先看看算法中的几个关键变量:1、密钥流:RC4算法的关键是根据明文和密钥生成相应的密钥流,密钥流的长度和明文的长度是对应的,也就是说明文的长度是500字节,那么密钥流也是500字节。当然,加密生成的密文也是500字节,因为密文第i字节=明文第i字节^密钥流第i字节;2、状态向量S:长度为256,S[0],S[1].....S[255]。每个单元都是一个字节,算法运行的任何时候,S都包括0-255的8比特数的排列组合,只不过值的位置发生了变换;3、临时向量T:长度也为256,每个单元也是一个字节。如果密钥的

7、长度是256字节,就直接把密钥的值赋给T,否则,轮转地将密钥的每个字节赋给T;4、密钥K:长度为1-256字节,注意密钥的长度keylen与明文长度、钥流的长度没有必然关系,通常密钥的长度趣味16字节(128比特)。RC4的原理分为三步:1、初始化S和Tfori=0to255doS[i]=i;T[i]=K[imodkeylen];2、初始排列Sfori=0to255doj=(j+S[i]+T[i])mod25

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。