加密算法的研究.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
总纲 加密算法的研究 2.在本小组中的任务 3.VC++测试程序中函数调用关系 4.C#程序中的编写 5.参考资料 加密算法的研究 1.1 置换表算法,典型是凯撒算法。 此算法没有使用密钥,每一个数据段(总是一个字节)对应着“置换表”中的一个偏移量,偏移量所对应的值就输出成为加密后的文件。加密程序和解密程序都需要一个这样的“置换表”。这种加密算法对于破译来讲是相当直接的,只要找到一个“置换表”就可以了。凯撒算法的偏移量是3。 1.2 二维置换表,算法名字忘了 此算法是运用密钥,将密钥循环排列至和原文长度一致,根据密钥和原文找到置换之后的密文,解密时运用密文和密钥以及置换表,进行还原。 1.3 综合的加密法 MD5 输入是一个字节串,每个字节是8个bit. 算法的执行分为以下几个步骤: 第一步,补位 第二步,附加数据长度 用一个64位的整数表示数据的原始长度(以bit为单位),将这个数字的8个字节按低位的在前,高位在后的顺序附加在补位后的数据后面。 第三步,初始化MD5参数: 有四个32位整数变量 (A,B,C,D) 用来计算信息摘要 第四步,定义四个MD5基本的按位操作函数(X,Y,Z为32位整数): F(X,Y,Z) = (X and Y) or (not(X) and Z) G(X,Y,Z) = (X and Z) or (Y and not(Z)) H(X,Y,Z) = X xor Y xor Z I(X,Y,Z) = Y xor (X or not(Z)) 再定义四个分别用于四轮变换的函数。 第五步,对输入数据作变换。 从这个算法中可以看到对位操作的操作函数都是基于三个基本操作,and、not和换位,再由这三个操作组成自己需要的加密操作。在加密过程中,可以循环几次进行加密,Rijndeal算法就是循环10~14次,DES算法循环了16次。 2在本小组中的任务 提供客户端和服务器端对传输的数据的加密算法,不采用已有的任何一种加密算法。 为配合正副组长的工作,将采用他们各自运用的编程语言来制作加密。 对于服务器端使用VC++制作,并且为避免对方未装.NET等问题,只是程序不能正常运行,此处将不使用.NET中的封装类。 对于客户端采C#制作 已完成VC++测试程序 2.1用途: 传输数据时要对数据进行加密,不能以明文传送,客户端和服务器端之间的传输是以密文进行,两个传输方向都是如此。 2.2特点: 对称密钥加密,测试时,输入任意长度的密钥,生成一个8位的密钥,实际运用时采用更长的密钥。 2.3算法(测试第一版): 测试中,明文输入是一个字符串,将其分为一个一个字符,每个字符是8个bit.。密钥也是由用户任意输入。 算法的执行分为以下几个步骤: 第一步补位: 将数据补满,使之能正好被分块完全,不会有残留,或不满。 测试程序中采用一个字符一个字符加密,因此不需要补位。MD5算法中是补一个1,然后补值为0的字节。实际运用时,是2或4个字符一加密,所以在实际运用时直接补空格。 第二步分块 将数据分成一个个数据块,分别进行加密。 测试程序中将起分成一个个字符,实际运用时分成两个字符,或四个。即每16bits或32bits一加密,测试时8bits一加密。 第三步初始化密钥 在测试程序中密钥是任意的字符串,对其进行操作得到实际需要的密钥。 第四步按位操作 将每一个数据块分为bit。 定义三种bit的操作:换位,异或,取反。 第五步对输入数据作变换 2.3算法(测试第二版): 是在第一种上的改进型。 将一个字符加一次密改为两个字符一组,这样就要在奇数个字符的情况下在最后补加空格。加入space来记录加了几个空格, space不是01,增加可扩展性,使加密也可以四个字符一组。 将密钥在加密时和字符组结合,产生新密钥,对后面的字符组加密,这样可以保证形如两个“aa”,加密的结果不同,增加破解难度。 这样得出的结果是:如果明文只在最后几位改变,加密内容也只在最后几位改变。本算法将加密之后的密文使用改变之后的密钥再加一次密,由于明文不同,产生的密钥也不同,这样使明文中后面的字符也可以影响到密文的所有字符,只要有微小不同,密文将完全不同。 密钥仍采用一个字符。 2.4算法 (测试第三版) 改为4个char一加密,并采用16位的密钥。 3 . VC++测试程序中函数调用关系 3.1 算法一函数介绍 Tobit()将char转化为8bits Fan(),对一个bit取反 Jiami(),Jiemi()是对8bits的内容分别进行加密和解密,没有用到密钥 Changea(),Changeb()是采用密钥对一个char进行加密,密钥是由用户输入的密钥产生 3.2 函数具体运用 任意输入明文和密钥 按下加密按钮:将

文档评论(0)

676200 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档