如下图所示,为什么使用两种方法加密结果长度会不一致,还有两种方法间有什么区别?
代码如下:
//方法一加密 private void button1_Click(object sender, EventArgs e) { //加密的字符串 string source = textBox1.Text; //创建MD5实例 MD5 md5 = MD5.Create(); //计算哈希值 byte[] result = md5.ComputeHash(Encoding.ASCII.GetBytes(source)); string re= ""; //历遍result的值 for (int i = 0; i < result.Length; i++) { re += result[i].ToString("X"); } textBox2.Text = re; } //方法二加密 private void button3_Click(object sender, EventArgs e) { string input = textBox1.Text; Encoding.ASCII.GetBytes(input); textBox3.Text = FormsAuthentication.HashPasswordForStoringInConfigFile(input, "MD5"); }
private void button1_Click(object sender, EventArgs e) { //加密的字符串 string source = textBox1.Text; //创建MD5实例 MD5 md5 = MD5.Create(); //计算哈希值 byte[] result = md5.ComputeHash(Encoding.ASCII.GetBytes(source)); string re= ""; //历遍result的值 for (int i = 0; i < result.Length; i++) { re += result[i].ToString("X2"); } textBox2.Text = re; }
FormsAuthentication.HashPasswordForStoringInConfigFile() 是X2格式输出的. 因为你上面是X. 所以会有一点不同.
第一种方式有一句写错了。
这一句写错了:re += result[i].ToString("X");
应该是这样子写: re += result[i].ToString("X2");
完整的代码如下:
//加密的字符串 string source = "admin"; //创建MD5实例 MD5 md5 = MD5.Create(); //计算哈希值 byte[] result = md5.ComputeHash(Encoding.Default.GetBytes(source)); string re = ""; //历遍result的值 for (int i = 0; i < result.Length; i++) { re += result[i].ToString("X2"); }