Form1窗体设计:2个Label、2个TextBox、1个Button、1个菜单项
Form2:“About”菜单项的信息
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Security.Cryptography; // MD5类位于该命名空间下 /// /// 背景: /// 2015年“高教杯”全国大学生数学建模比赛涉及论文的MD5码 /// 碰巧看到相关C#实现MD5算法加密密码 /// /// <summary> /// MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。 /// 是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。 /// 将数据(如汉字)运算为另一固定长度值,是杂凑算法的基础原理。 /// </summary> /// /// 原理: /// MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组, /// 经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。 /// namespace 仿MD5校验 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { string Password = textBox1.Text.ToString(); // 获取用户输入的密码 MD5 md5 = new MD5CryptoServiceProvider(); // 创建MD5对象,初始化 byte[] Data = System.Text.Encoding.Default.GetBytes(Password); // 将字符编码为一个字节序列 byte[] md5Data = md5.ComputeHash(Data); // 计算Data字节数组的哈希值 md5.Clear(); // 清空MD5对象,“释放资源”以前没怎么注意到 string NewPassword = ""; // 记录加密后的MD5码 for(int i=0; i<md5Data.Length; i++) // 遍历字节数组 { NewPassword += md5Data[i].ToString("x").PadLeft(2, '0'); // 对遍历到的字节加密 } textBox2.Text = NewPassword; } private void aboutToolStripMenuItem_Click(object sender, EventArgs e) // About菜单项 { Form2 frm = new Form2(); frm.ShowDialog(); } } }