您的位置:首页 > 编程语言 > C#

C#实现字符串SHA-256加密算法

2016-01-10 00:40 465 查看
其实现的方式与SHA-512是差不多的,只是由512改为:256,加密后的字节为:256/8=32个,十六进制HEX输出为:64个字节。

实现的代码如下:

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 工程文件下载:点击打开链接
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: