C#实现字符串SHA-256加密算法
2016-01-10 00:40
465 查看
其实现的方式与SHA-512是差不多的,只是由512改为:256,加密后的字节为:256/8=32个,十六进制HEX输出为:64个字节。
实现的代码如下:
运行效果如下:
![](http://img.blog.csdn.net/20160110003952108?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
VS2013 工程文件下载:点击打开链接
实现的代码如下:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading; using System.Windows.Forms; using System.Security.Cryptography; namespace SHA256_V1 { public partial class StringSHA256 : Form { public StringSHA256() { InitializeComponent(); } private void btn_Compare_Click(object sender, EventArgs e) { if(txt_SHA256.Text.ToUpper()==txt_SHA256_2.Text.ToUpper()) { MessageBox.Show("比较结果一样!", "比较成功", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { MessageBox.Show("比较结果不一样", "比较失败", MessageBoxButtons.OK, MessageBoxIcon.Error); } } public string GetSHA256HashFromString(string strData) { byte[] bytValue = System.Text.Encoding.UTF8.GetBytes(strData); try { SHA256 sha256 = new SHA256CryptoServiceProvider(); byte[] retVal = sha256.ComputeHash(bytValue); StringBuilder sb = new StringBuilder(); for (int i = 0; i < retVal.Length; i++) { sb.Append(retVal[i].ToString("x2")); } return sb.ToString(); } catch (Exception ex) { throw new Exception("GetSHA256HashFromString() fail,error:" + ex.Message); } } private void checkBox1_CheckedChanged(object sender, EventArgs e) { if(checkBox1.Checked) { txt_SHA256.Text = txt_SHA256.Text.ToUpper(); } else { txt_SHA256.Text = txt_SHA256.Text.ToLower(); } } private void btn_GetSHA256_Click(object sender, EventArgs e) { txt_SHA256.Text = GetSHA256HashFromString(txt_SRC.Text); } } }
运行效果如下:
VS2013 工程文件下载:点击打开链接