- 1、本文档共53页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[工学]第6章 密码与加密管理
6.1 密码技术概述 6.4 PGP软件应用实验 6.3.2 非对称加密及单向加密 6.3 实用加密技术概述 【案例6-10】应用RSA算法的加/解密过程。 明文为“HI”,操作过程如下: 1)设计密钥公钥(e,n)和私钥(d,n) 。 令p=11,q=5,取e=3。 计算:n=p*q=55,求出φ(n)=(p-1)(q-1)=40。 计算:e×d mod φ(n) =1, 即在与55互素的数中选取与40互素的数,得d=27(保密数)。 因此:公钥对为(3,55),私钥对为(27,55)。 2) 加密。 (按1-26的次序排列字母,则H为8,I为9) 用公钥(3,55) 加密:E(H)=83 mod 55=17;E(I)=93 mod 55=14(17为Q, 14为N)。 密文为:QN。 3 ) 解密。 D(Q)=1727 mod 55=8 ;D(N)=1427 mod 55=9。 (8为H, 9为I) 6.3.2 非对称加密及单向加密 2.Hash算法 (1)Hash基本知识 Hash直译哈希,一般翻译做“散列”。就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。 若结构中存在关键字和K相等的记录,则必定在f(K)的存储位置上。由此,不需比较便可直接取得所查记录。称这个对应关系f为散列函数(Hash function)。 对不同的关键字可能得到同一散列地址,即key1≠key2,而f(key1)=f(key2),这种现象称冲突。 6.3 实用加密技术概述 6.3.2 非对称加密及单向加密 2.Hash算法 (2)Hash算法 Hash主要用于信息安全领域中加密算法,Hash算法把一些不同长度的信息转化成杂乱的128位的编码里,叫做HASH值。Hash算法是一个不可逆的单向函数。不同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值。用于信息安全领域中不想对信息解密或读取,而只需证实信息的正确性。这种加密适用:文件校验、数字签名、签名文件、鉴权协议。 6.3 实用加密技术概述 6.3.2 非对称加密及单向加密 3.MD4和MD5 MD4(Message Digest 4),是麻省理工学院的教授Ronald Rivest在1990年设计的消息摘要算法,是他们设计的一系列消息摘要算法中的第4个算法,属于散列算法,用于数字签名。MD4基于 32 位操作数的位操作来实现的,其摘要长度为128位。 MD5是 Rivest 于1991年对MD4的改进版本。MD5 算法将输入的信息进行分组,每组仍以512 位(64个 字节),顺序处理完所有分组后输出128 位结果。将这128 位用十六进制表示便是常见MD5 码。在每一组消息的处理中,都要进行4 轮、每轮16 步、总计64 步的处理。其中,每步计算中含一次左循环移位,每一步结束时将计算结果进行一次右循环移位。 6.3 实用加密技术概述 MD5算法流程简介如下: (1)初始化。设置二维数组 Table[4][16](因为有64个常量,对应每组处理的4×16=64步)。? (2)信息的读取与填充 1) 将需加密的信件信息(如一份文件)分次读取到缓冲区中; 2) 判断信息是否已全部读完,“否”对读取的信息分组计算,“是”在信息尾部进行适当的填充 填充的规则:其一,使其字节数除以64 时余数为56。如果最后一次读取为70 字节,70%64=6 小于56,则需在 尾部填充56-6=50 个字节,得(70+50)%64=56。(注:若消息为64n 倍数字节,则最后一次读取0 字节);如果最后一次读取为124 字节,124%64=60 大于56 ,则先将这组填满(填满即是64字节。此处为4 字节),再在下一组空间上填56 个字节,得(124+4+56)%64=56; 如果最后一次读取为120 字节,120%64=56 等于56,此时仍需填充,填充字节总数为64,即一组,得(120+64)%64=56。其二,知道了填充长度,填充的第一个字节为128,其余字节全为0。128的二进制数为1000 0000,0 的二进制应为0000 0000。经过上面的填充后最后一组只有56 字节,还有剩余的8 字节,这8 个字节用于存放消息填充前的总长度,而且单位不是字节,是位。 (3)分组处理。对每组消息进行4轮、每轮16步总计64步的处理。具体函数有: 第一轮逻辑函数:F(b,c,d)=(bc)|((~b) amp;d)
文档评论(0)