LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

C# HASH算法之MD5、SHA

admin
2023年2月27日 10:23 本文热度 396

    我想了一下,这一篇还是不用加解密的标题了,毕竟就现在技术来言,MD5和HASH还是不可逆的。

MD5我们用的还是比较多的,一般用来加密存储密码。但是现在很多人觉MD5可能不太安全了,所以都用上了SHA256等来做加密(虽然我觉得都差不多,MD5还是能玩)。

还是跟上一篇说的一样,当一个算法的复杂度提高的同时肯定会带来效率的降低,所以SHA和MD5比较起来的话,SHA更安全,MD5更高效。

由于HASH算法的不可逆性,所以我认为MD5和SHA主要还是应用在字符串的"加密"上。

由于.NET给我们提供的算法类库很完善,所以实现这两种算法的话还是比较简单的,下面分别写下MD5、SHA1、SHA256、SHA384、SHA512的实现方式

实现功能:

    • 使用MD5以及SHA1、SHA256、SHA384、SHA512等算法实现字符串"加密"

开发环境:

开发工具:Visual Studio 2013

.NET Framework版本:4.5

实现代码:

  public class Md5Util    {        /// <summary>        /// MD5加密        /// </summary>        /// <param name="data"></param>        /// <returns></returns>        public static byte[] Encrypt(byte[] data)        {            MD5CryptoServiceProvider md5Provider = new MD5CryptoServiceProvider();            return md5Provider.ComputeHash(data);        }
/// <summary> /// MD5加密字符串 /// </summary> /// <param name="data"></param> /// <returns></returns> public static string Encrypt(string data) { byte[] bytes = Encrypt(Encoding.UTF8.GetBytes(data)); StringBuilder result = new StringBuilder(); for (int i = 0; i < bytes.Length; i++) { //x2为小写,X2为大写 result.Append(bytes[i].ToString("X2")); } return result.ToString(); }
}
  public class ShaUtil    {
public static byte[] Encrypt(byte[] data, ShaType shaType) { HashAlgorithm ShaProvider = new SHA256CryptoServiceProvider(); switch (shaType) { case ShaType.SHA1: ShaProvider = new SHA1CryptoServiceProvider(); break; case ShaType.SHA256: ShaProvider = new SHA256CryptoServiceProvider(); break; case ShaType.SHA384: ShaProvider = new SHA384CryptoServiceProvider(); break; case ShaType.SHA512: ShaProvider = new SHA512CryptoServiceProvider(); break; } return ShaProvider.ComputeHash(data); }
public static string Encrypt(string data,ShaType shaType) { byte[] bytes = Encrypt(Encoding.UTF8.GetBytes(data), shaType); StringBuilder result = new StringBuilder(); for (int i = 0; i < bytes.Length; i++) { //x2为小写,X2为大写 result.Append(bytes[i].ToString("X2")); } return result.ToString(); }

public enum ShaType { SHA1, SHA256, SHA384, SHA512 } }
   private void btn_Md5_Encrypt_Click(object sender, EventArgs e)        {            textBox2.Text = Md5Util.Encrypt(textBox1.Text);        }
private void btn_Sha1_Encrypt_Click(object sender, EventArgs e) { textBox2.Text = ShaUtil.Encrypt(textBox1.Text, ShaUtil.ShaType.SHA1); }
private void btn_Sha256_Encrypt_Click(object sender, EventArgs e) { textBox2.Text = ShaUtil.Encrypt(textBox1.Text, ShaUtil.ShaType.SHA256); }
private void btn_Sha384_Encrypt_Click(object sender, EventArgs e) { textBox2.Text = ShaUtil.Encrypt(textBox1.Text, ShaUtil.ShaType.SHA384); }
private void btn_Sha512_Encrypt_Click(object sender, EventArgs e) { textBox2.Text = ShaUtil.Encrypt(textBox1.Text, ShaUtil.ShaType.SHA512); }

实现效果:


呼呼,到这里,C#常用的几种加密方式就写完咯。


该文章在 2023/2/27 10:23:31 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved