MD5计算器,字符串&文件校验
来源:互联网 发布:公务员网络培训学校 编辑:程序博客网 时间:2024/05/09 02:23
练习所作
下面是将文件和字符串转化为md5值代码
private static string GetMd5FromFile(string path) { using (MD5 md=MD5.Create()) { using (FileStream fsRead = File.OpenRead(path)) { byte[] buffer = md.ComputeHash(fsRead); md.Clear(); StringBuilder sbMD5 = new StringBuilder(); for (int i = 0; i < buffer.Length; i++) { sbMD5.Append(buffer[i].ToString("X2")); } return sbMD5.ToString().ToLower(); } } } private static string GetMD5FromString(string str) { using (MD5 md=MD5.Create()) { byte[] strBuffer = Encoding.Default.GetBytes(str); byte[] mdBuffer = md.ComputeHash(strBuffer); StringBuilder sbMd5 = new StringBuilder(); for (int i = 0; i < mdBuffer.Length; i++) { sbMd5.Append(mdBuffer[i].ToString("X2")); } return sbMd5.ToString().ToLower(); } }
无论是文件还是字符串用ComputeHash()方法,传入的是byte[] ,返回值也是byte[].
ComputeHash()得到的返回值byte[]
希望得到的是
循环将素组中每个元素转换成16进制,保存两位.->buffer[i].ToString("X2"),保存到StringBuilder中
拼接得到的字符串
下面是winform程序中的所有代码,
可以在路径textbox中直接输入路径,判断路径存在?打开改路径:打开默认路径
判断路径中的文件存在?直接计算文件md5值:提示文件不存在,都在leave()中执行
信息textbox中输入字符串,在TextChanged()事件中执行计算MD5方法
比较两个MD5值是否相同,这个简单,注意都转换成大写或小写
注意:空格字符也是内容 "1"的MD5和"1 "不同
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.IO;using System.Linq;using System.Security.Cryptography;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;namespace md5计算器{ public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void btnCompare_Click(object sender, EventArgs e) { string strMD5 = txtMD.Text.Trim().ToLower(); string strRef = txtReference.Text.Trim().ToLower(); bool b = ResCompare(strMD5,strRef); string res = b ? "一致" : "MD5值 与 参考值 不相同!"; MessageBox.Show(res); } private static bool ResCompare(string strMD5, string strRef) { if (strMD5==strRef) { return true; } return false; } private void textBox1_TextChanged(object sender, EventArgs e) { String str = txtInfo.Text; txtMD.Text = GetMD5FromString(str); } private static string GetMD5FromString(string str) { using (MD5 md=MD5.Create()) { byte[] strBuffer = Encoding.Default.GetBytes(str); byte[] mdBuffer = md.ComputeHash(strBuffer); StringBuilder sbMd5 = new StringBuilder(); for (int i = 0; i < mdBuffer.Length; i++) { sbMd5.Append(mdBuffer[i].ToString("X2")); } return sbMd5.ToString().ToLower(); } } private void btnChooseFile_Click(object sender, EventArgs e) { OpenFileDialog ofd = new OpenFileDialog(); //ofd.InitialDirectory = @"D:\BEI\download\other"; ofd.Filter = "所有文件|*.*|Excel文件(*.xls;*.xlsx)|*.xls;*.xlsx"; ofd.Title = "请选择一个文件"; ofd.Multiselect = false; if (ofd.ShowDialog()==DialogResult.OK) { txtPath.Text = ofd.FileName; txtMD.Text = GetMd5FromFile(ofd.FileName); } } private void txtPath_TextChanged(object sender, EventArgs e) { } private static string GetMd5FromFile(string path) { using (MD5 md=MD5.Create()) { using (FileStream fsRead = File.OpenRead(path)) { byte[] buffer = md.ComputeHash(fsRead); md.Clear(); StringBuilder sbMD5 = new StringBuilder(); for (int i = 0; i < buffer.Length; i++) { sbMD5.Append(buffer[i].ToString("X2")); } return sbMD5.ToString().ToLower(); } } } private void txtPath_Leave(object sender, EventArgs e) { string path = txtPath.Text; if (path.Trim()=="") { txtMD.Text = "在编辑框中输入字符串 ->自动计算出MD5值"; } else { if (Directory.Exists(path)) { OpenFileDialog ofd = new OpenFileDialog(); ofd.InitialDirectory = path; ofd.Filter = "所有文件|*.*|Excel文件(*.xls;*.xlsx)|*.xls;*.xlsx"; ofd.Title = "请选择一个文件"; ofd.Multiselect = false; if (ofd.ShowDialog() == DialogResult.OK) { txtPath.Text = ofd.FileName; txtMD.Text = GetMd5FromFile(ofd.FileName); } return; } if (File.Exists(path) == true) { txtMD.Text = GetMd5FromFile(path); } else { MessageBox.Show("文件不存在"); } } } }}
0 0
- MD5计算器,字符串&文件校验
- MD5工具类,提供字符串MD5加密(校验)、文件MD5值获取(校验)功能
- MD5工具类,提供字符串MD5加密(校验)、文件MD5值获取(校验)功能
- 文件MD5计算器
- C#实现字符串,文件获取Md5加密校验方法
- C# MD5文件校验
- C# MD5文件校验
- C# MD5文件校验 .
- MD5 生成文件校验
- MD5文件校验
- MD5文件校验
- 文件的MD5校验
- MD5 生成文件校验
- 文件做MD5校验
- md5校验文件数据
- 【MD5】MD5校验文件的正确性
- MD5校验文件/读取签名MD5
- python中md5文件校验
- Alibaba开发手册摘抄
- 关于B树 B-树 B+ 树 总结
- DisposableBean
- 利用URL Scheme打开APP并传递数据
- set和map
- MD5计算器,字符串&文件校验
- 怎样将U盘改成NTFS格式
- 如何C#生成EXE程序
- React Native调用系统的应用:电话、短信、邮件、浏览器等
- Xcode8注释的快捷键
- Android 6.0 scrollview 嵌套recyclerview不能全部显示,高度不正常的问题
- Jetty和tomcat的比较
- 软件定义存储的定义与分类
- psftp的用法(超级详细)