using System;
using System.Globalization;
using System.IO;
using System.Security.Cryptography;
using System.Text;namespace Utils
{/// <summary>/// 密码加密解密操作相关类/// </summary>public class PassWordHelper{#region MD5 - 32 加密/// <summary>/// MD5 - 32加密/// </summary>/// <param name="source">待加密字段</param>/// <returns></returns>public string Md5(string source){MD5 md5 = MD5.Create();byte[] btStr = Encoding.UTF8.GetBytes(source);byte[] hashStr = md5.ComputeHash(btStr);StringBuilder pwd = new StringBuilder();foreach (byte bStr in hashStr) { pwd.Append(bStr.ToString("x2")); }return pwd.ToString();}/// <summary>/// 加盐MD5 -32 加密/// </summary>/// <param name="source">待加密字段</param>/// <param name="salt">盐巴字段</param>/// <returns></returns>public string Md5Salt(string source, string salt){return salt.IsEmpty() ? source.Md5() : (source + "『" + salt + "』").Md5();}#endregion#region DES 加密解密/// <summary>/// DES 字符串型加密/// </summary>/// <param name="source">待加密字段</param>/// <param name="keyVal">8位密钥值</param>/// <param name="ivVal">8位加密辅助向量</param>/// <returns>类似:xQ969nexy964SXhkTuekUQ==</returns>public string DesStr(string source, string keyVal, string ivVal){try{byte[] btKey = Encoding.UTF8.GetBytes(keyVal.Length > 8 ? keyVal.Substring(0, 8) : keyVal);byte[] btIv = Encoding.UTF8.GetBytes(ivVal.Length > 8 ? ivVal.Substring(0, 8) : ivVal);DESCryptoServiceProvider des = new DESCryptoServiceProvider();using (MemoryStream ms = new MemoryStream()){byte[] inData = Encoding.UTF8.GetBytes(source);try{using (CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(btKey, btIv), CryptoStreamMode.Write)){cs.Write(inData, 0, inData.Length);cs.FlushFinalBlock();}return Convert.ToBase64String(ms.ToArray());}catch{return source;}}}catch { return "DES加密出错"; }}/// <summary>/// DES 字符串型解密/// </summary>/// <param name="source">待解密字段</param>/// <param name="keyVal">8位密钥值</param>/// <param name="ivVal">8位加密辅助向量</param>/// <returns></returns>public string UnDesStr(string source, string keyVal, string ivVal){byte[] btKey = Encoding.UTF8.GetBytes(keyVal.Length > 8 ? keyVal.Substring(0, 8) : keyVal);byte[] btIv = Encoding.UTF8.GetBytes(ivVal.Length > 8 ? ivVal.Substring(0, 8) : ivVal);DESCryptoServiceProvider des = new DESCryptoServiceProvider();using (MemoryStream ms = new MemoryStream()){byte[] inData = Convert.FromBase64String(source);try{using (CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(btKey, btIv), CryptoStreamMode.Write)){cs.Write(inData, 0, inData.Length);cs.FlushFinalBlock();}return Encoding.UTF8.GetString(ms.ToArray());}catch{return source;}}  }/// <summary>/// DES MAC地址型加密/// </summary>/// <param name="source">待加密字段</param>/// <param name="keyVal">8位密钥值</param>/// <param name="ivVal">8位加密辅助向量</param>/// <returns></returns>public string DesMac(string source, string keyVal, string ivVal){try{byte[] data = Encoding.UTF8.GetBytes(source);var des = new DESCryptoServiceProvider { Key = Encoding.ASCII.GetBytes(keyVal.Length > 8 ? keyVal.Substring(0, 8) : keyVal), IV = Encoding.ASCII.GetBytes(ivVal.Length > 8 ? ivVal.Substring(0, 8) : ivVal) };var desencrypt = des.CreateEncryptor();byte[] result = desencrypt.TransformFinalBlock(data, 0, data.Length);return BitConverter.ToString(result);}catch { return "转换出错!"; }}/// <summary>/// DES MAC地址型解密/// </summary>/// <param name="source">待解密字段</param>/// <param name="keyVal">8位密钥值</param>/// <param name="ivVal">8位加密辅助向量</param>/// <returns></returns>public string UnDesMac(string source, string keyVal, string ivVal){try{string[] sInput = source.Split("-".ToCharArray());byte[] data = new byte[sInput.Length];for (int i = 0; i < sInput.Length; i++){data[i] = byte.Parse(sInput[i], NumberStyles.HexNumber);}var des = new DESCryptoServiceProvider { Key = Encoding.ASCII.GetBytes(keyVal.Length > 8 ? keyVal.Substring(0, 8) : keyVal), IV = Encoding.ASCII.GetBytes(ivVal.Length > 8 ? ivVal.Substring(0, 8) : ivVal) };var desencrypt = des.CreateDecryptor();byte[] result = desencrypt.TransformFinalBlock(data, 0, data.Length);return Encoding.UTF8.GetString(result);}catch { return "解密出错!"; }}#endregion#region RSA 加密解密//密钥对private const string PublicRsaKey = @"<RSAKeyValue><Modulus>x</Modulus><Exponent>e</Exponent></RSAKeyValue>";private const string PrivateRsaKey = @"<RSAKeyValue><Modulus>x</Modulus><Exponent>e</Exponent><P>p</P><Q>q</Q><DP>dp</DP><DQ>dq</DQ><InverseQ>iq</InverseQ><D>d</D></RSAKeyValue>";/// <summary>/// RSA 加密/// </summary>/// <param name="source">待加密字段</param>/// <returns></returns>public string Rsa(string source){RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();rsa.FromXmlString(PublicRsaKey);var cipherbytes = rsa.Encrypt(Encoding.UTF8.GetBytes(source), true);return Convert.ToBase64String(cipherbytes);}/// <summary>/// RSA解密/// </summary>/// <param name="source">待解密字段</param>/// <returns></returns>public string UnRsa(string source){RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();rsa.FromXmlString(PrivateRsaKey);var cipherbytes = rsa.Decrypt(Convert.FromBase64String(source), true);return Encoding.UTF8.GetString(cipherbytes);}#endregion}
}

转载于:https://www.cnblogs.com/yanlovehan/p/5338033.html

c# 加密解密帮助类相关推荐

  1. 加密解密php,PHP实现的加密解密处理类

    本文实例讲述了PHP实现的加密解密处理类.分享给大家供大家参考,具体如下: /*=========================================================== ...

  2. C# MD5加密解密帮助类

    /// <summary>     /// MD5加密解密帮助类     /// </summary>     public static class DESHelper    ...

  3. php中des加密cbc模式,php中加密解密DES类的简单使用方法示例

    本文实例讲述了php中加密解密DES类的简单使用方法.分享给大家供大家参考,具体如下: 在平时的开发工作中,我们经常会对关键字符进行加密,可能为了安全 也可能为了规范,所以要正确使用DES加密解密 代 ...

  4. C#做的一个加密/解密的类

    C#做的一个加密/解密的类 大家要有兴趣,可以一起来讨论一下 WebService数据交互安全问题,以下的这个代码,可以用于Dotnet环境下的任何托管方式的应用程序,在实际应用中有两个实例.其中,有 ...

  5. cls certificate.php,php加密解密处理类

    PHP加密解密也是常有的事,发现discuz论坛里的PHP加密解密处理类代码,感觉挺不错,在用的时候,要参考Discuz论坛的passport相关函数,后面我会附上使用方法. php加密解密处理类&l ...

  6. java des加密解密_Java实现的DES加密解密工具类实例

    本文实例讲述了Java实现的DES加密解密工具类.分享给大家供大家参考,具体如下: 一个工具类,很常用,不做深入研究了,那来可直接用 DesUtil.java package lsy; import ...

  7. java字符串加密解密工具类

    /*** 字符串加密解密工具类** @author guyuqiang* @date 2021-06-07*/ public class StringEncryptUtil {/*** 字符串默认键值 ...

  8. java des 加密工具的使用,Java中DES加密解密工具类的实现实例

    这篇文章主要介绍了Java实现的DES加密解密工具类,结合具体实例形式分析了Java实现的DES加密解密工具类定义与使用方法,需要的朋友可以参考下 本文实例讲述了Java实现的DES加密解密工具类.分 ...

  9. Java AES 加密解密工具类

    maven 引入一个依赖 <!-- https://mvnrepository.com/artifact/commons-codec/commons-codec --> <depen ...

  10. jwt加密解密工具类

    jwt 加密&解密工具类 引入依赖 <dependency><groupId>io.jsonwebtoken</groupId><artifactId ...

最新文章

  1. MySQL中,当update修改数据与原数据相同时会再次执行吗?
  2. 简单的form表单操作的几种写法
  3. bcrypt如何内置盐?
  4. wireshark抓包详解
  5. 4.Boost之ref
  6. 【渝粤教育】国家开放大学2018年秋季 1313T学前儿童卫生与保健 参考试题
  7. html 选择不能重复,人生,就是一次无法重复的选择(深度好文)
  8. Windows10下手工强制清理删掉安装版的JRE8导致java.exe无法运行的解决办法
  9. struts2.1.6出现at com.opensymphony.xwork2.util.FileManager$FileRevision.needsReloading
  10. 能把汉字转化为拼音的一个函数
  11. 动态组合sql语句详解
  12. 【java】正则表达式
  13. java date类1900,java - 使用javax.validation验证日期不得少于1900-01-01 - 堆栈内存溢出...
  14. 《OpenGL超级宝典》 - 源代码文件
  15. 三人表决器Verilog
  16. mysql 字符串拼接 null_mysql字符串拼接并设置null值的实例方法
  17. 安装SQL Server2012
  18. 华佗穿越来教程序员睡觉
  19. 发红包的程序代码java_Java实现微信发红包
  20. The content of element type “mapper“ must match “(cache-ref|cache|resultMap*|parameterMap*|sql*|inse

热门文章

  1. 《LeetCode力扣练习》第20题 有效的括号 Java
  2. vue渲染大量数据如何优化_Vue - Table表格渲染上千数据优化
  3. linux bios芯片型号,如何准确判断主板BIOS类型 - 怎么看bios芯片型号_查看bios芯片型号...
  4. 三个事件同步实现双相机同步WaitForMultipleObjects
  5. 程序清单3.3_bases.c程序_《C Primer Plus》P37
  6. 关于element-ui 中使用Notice组件(Message、MessageBox、Notification)所遇到的坑
  7. Spring源码系列:BeanDefinition源码解析
  8. 用户体验分析:以 “师路南通网站” 为例
  9. 第一章 Shiro简介——跟我学习springmvc shiro mybatis
  10. nginx 的动静分离配置(tomcat)