.加密算法的熟悉
目前校验文件使用最多的是md值和sha值,不外乎有些使用crc,前段时间微软发布了visualstudio正式版,win镜像,微软官方给出的校验方式都是校验文件的sha值。
c#进行md加密与sha加密的实现总结在这里
.文件的加密计算
知道了如何进行普通字符串的加密还不够,我们要校验的文件的md值或sha值,接下来熟悉如何获取文件的md值和sha值
获取文件的md值
public static string getfilemd(string filepath) { mdcryptoserviceprovider md = new mdcryptoserviceprovider(); filestream fs = new filestream(filepath, filemode.open, fileaccess.read, fileshare.read); byte[] result = md.computehash(fs); md.clear(); stringbuilder sb = new stringbuilder(); for (int i = ; i < result.length; i++) { sb.append(result[i].tostring("x")); } return sb.tostring(); }
获取文件的sha值
public static string getfilesha(string filepath) { sha sha = new shacryptoserviceprovider(); filestream fs = new filestream(filepath, filemode.open, fileaccess.read, fileshare.read); byte[] result = sha.computehash(fs); sha.clear(); stringbuilder sb = new stringbuilder(); for (int i = ; i < result.length; i++) { sb.append(result[i].tostring("x")); } return sb.tostring(); }
public static class validhelper { public static string getfilehash(string filepath, hashalgorithm algorithm) { filestream fs = new filestream(filepath, filemode.open, fileaccess.read, fileshare.read); byte[] result = algorithm.computehash(fs); algorithm.clear(); stringbuilder sb = new stringbuilder(); for (int i = ; i < result.length; i++) { sb.append(result[i].tostring("x")); } return sb.tostring(); } public static string getfilemd(string filepath) { mdcryptoserviceprovider md = new mdcryptoserviceprovider(); return getfilehash(filepath, md); } public static string getfilesha(string filepath) { sha sha = new shacryptoserviceprovider(); return getfilehash(filepath, sha); } public static string getfilesha(string filepath) { sha sha = sha.create(); return getfilehash(filepath, sha); } public static string getfilesha(string filepath) { sha sha = sha.create(); return getfilehash(filepath, sha); } public static string getfilesha(string filepath) { sha sha = sha.create(); return getfilehash(filepath, sha); } }
.完成后测试与分析
代码完成之后便是测试,在网上找一个文件校验工具(使用的软媒魔方里的校验工具),进行比对,看自己的校验工具是否与软媒魔方的校验工具的校验结果是否一致,经校验,没有错误,最初测试的小文件,后来下载了一个win系统,使用自己的校验工具,校验是否和微软官方给出的sha值一致时,小工具直接卡死了,过了好长时间才出来结果,这说明这个小工具还待优化,尤其是处理大文件。
在网上查找资料,看到有这样的实现思路,将文件在内存中的位置分段,比如说分成段,分个线程同时开始计算,最后将个计算值再经过处理得到整个文件的sha值或md值。然而愚钝,不知道该如何实现,望大神看到之后能给予一些指导,万分感谢。
以上介绍就是本文的全部内容,希望大家喜欢。
如对本文有疑问, 点击进行留言回复!!
使用Visual Studio2019创建C#项目(窗体应用程序、控制台应用程序、Web应用程序)
C#实现获取本地内网(局域网)和外网(公网)IP地址的方法分析
网友评论