MD5及应用

1、MD5应用

       首先我们要知道一个字符的长度是8位(bit),即一个字节的长度。现在我们要做的就是将一个字符串Str1分割成每512位为一个分组。MD5有四个32位的被称作链接变量的整数参数,进行设置,并确保形参a在内存中的值改变了,可以在形参中用按引用调用(&a),或返回a值取代原来a值。接下来就是要进行一个MD5算法的主要循环了,这个循环的循环次数为512位分组的个数(即之前提到的N+1或者N+2)。处理完所有的512位的分组后,得到一组新的A,B,C,D的值,将这些值按ABCD的顺序级联,然后输出。这里还要注意,输出的MD5是按内存中数值的排列顺序,所以我们要分别对A,B,C,D的值做一个小端规则的转换。举个例子:A有32位,分成4个字节A1A2A3A4。输出A的时候,要这样输出:A4A3 A2A1。这样就能输出正确的MD5了。

       明文输入进去改变后,MD5值改变较大。但是得到的MD5长度不变,依然是32位。


 2、MD5算法具有以下特点:

  1)压缩性:任意长度的数据,算出的MD5值长度都是固定的。

  2)容易计算:从原数据计算出MD5值很容易。

  3)抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。

  4)弱抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。

  5、强抗碰撞:想找到两个不同的数据,使它们具有相同的MD5值,是非常困难的。

 

3、分析用MD5进行文件完整性校验

      MD5为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。MD5用在游戏打包时,将所有的模型,纹理贴图,地图等数据打包成.sqp文件后,对比打包后的数据源文件的MD5值,若相同的话则打包成功,可以删掉源文件以节省存储空间。打包后文件的数据可以直接通过sfmpq的api根据文件名打开;源文件的话通过内存映射文件打开,分别计算其MD5值即可。


源代码:

Form1.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值