UH3L2——获取AB包文件的MD5码
UH3L2——获取AB包文件的MD5码
本章代码关键字
1 | System.Security.Cryptography //安全和加密相关命名空间 |
MD5码
MD5(Message-Digest Algorithm)是MD5信息摘要算法的简称,它是一种广泛使用的密码散列函数
可以生成出一个128位(16个字节)的散列值,用于确保信息的完整一致性
当我们将数据经过MD5算法计算过后,不管我们传入的数据有多大,都会生成一个固定长度(128位共16个字节)的信息摘要值
相同的数据,每次经过MD5算法计算后的结果都会是一样的,如果数据变化,MD5码将会发生变化
因此,我们可以利用MD5码作为文件的唯一标识,通过它来判断文件内容是否变化
MD5码在热更新资源对比文件中的作用
通过资源名或者资源大小我们无法判断资源是否更新,所以我们需要**利用MD5的唯一性,来判断资源的更新**
C#中获取文件的MD5码
关键类:
-
新知识
-
MD5
—— MD5类 -
MD5CryptoServiceProvider
—— MD5加密服务提供商类
-
-
老知识
- FileStream —— 文件流类 数据持久化四部曲 2进制中讲解过
- StringBuilder —— 字符串拼接类 C#四部曲C#核心中讲过
获取MD5码流程:
-
根据文件路径,获取文件的流信息
1
using (FileStream file = new FileStream(filePath, FileMode.Open))
-
利用md5对象根据流信息,计算出MD5码(字节数组形式)
1
2MD5 md5 = new MD5CryptoServiceProvider();
byte[] md5Info = md5.ComputeHash(file); -
将字节数组形式的MD5码转为16进制字符串(
byte
的ToString()
内传入"x2"
,会转为小写16进制)1
2
3for (int i = 0; i < md5Info.Length; i++)
//关于md5Info[i].ToString()内的参数,如果传入X2就是大写的16进制,x2就是小写的
sb.Append(md5Info[i].ToString("x2"));
读取指定路径下的luaAB包,输出它的MD5码
1 | using System.IO; |
输出如下:
向luaAB包添加了一个文件的输出如下:
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 文KRIFE齐的博客!