字符串加密、解密算法包括:
MD5、Des、Base64三种方式,详情如下所示:using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Security.Cryptography;
using System.Text;namespace EncryptTools
{/// <summary>/// 加解密帮助类/// </summary>public class EncryptHelpers{//定义一个用于保存静态变量的实例private static EncryptHelpers instance = null;//定义一个保证线程同步的标识private static readonly object locker = new object();//构造函数为私有,使外界不能创建该类的实例private EncryptHelpers() { }public static EncryptHelpers Instance{get{if (instance == null){lock (locker){if (instance == null) instance = new EncryptHelpers();}}return instance;}}private byte[] Keys = new byte[]{18, 52, 86, 120, 144, 171, 222, 239};private string EncryptKey = "SWGSUNWG";#region MD5加密/// <summary>/// MD5加密/// </summary>/// <param name="content">需要加密的字符串</param>/// <param name="encode">字符的编码,默认null=UTF8Encoding</param>/// <returns></returns>public string MD5Encrypt(string content, Encoding encode = null){if (string.IsNullOrEmpty(content)) return string.Empty;if (encode == null) encode = new UTF8Encoding();MD5 md5 = new MD5CryptoServiceProvider();byte[] t = md5.ComputeHash(encode.GetBytes(content));StringBuilder sb = new StringBuilder(32);for (int i = 0; i < t.Length; i++)sb.Append(t[i].ToString("x").PadLeft(2, '0'));return sb.ToString();}/// <summary>/// MD5加密(返回16位加密串)/// </summary>/// <param name="content">需要加密的字符串</param>/// <param name="encode">字符的编码,默认null=UTF8Encoding</param>/// <returns></returns>public string MD5Encrypt16(string content, Encoding encode = null){if (string.IsNullOrEmpty(content)) return string.Empty;if (encode == null) encode = new UTF8Encoding();MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();string result = BitConverter.ToString(md5.ComputeHash(encode.GetBytes(content)), 4, 8);result = result.Replace("-", "");return result;}#endregion#region Des 加密、解密/// <summary> /// 加密数据 /// 如秘钥为空 则返回原文/// </summary> /// <param name="content">加密前文本</param> /// <param name="desKey">密匙</param> /// <returns></returns> public string DesEncrypt(string content, string desKey){try{if (string.IsNullOrEmpty(desKey)) return content;DESCryptoServiceProvider des = new DESCryptoServiceProvider();des.Mode = CipherMode.ECB;var keys = new byte[8];if (desKey.Length < 8){var tmpkeys = System.Text.Encoding.UTF8.GetBytes(desKey);for (int i = 0; i < keys.Length; i++){if (tmpkeys.Length > i)keys[i] = tmpkeys[i];elsekeys[i] = 0;}}else keys = System.Text.Encoding.UTF8.GetBytes(desKey.Substring(0, 8));des.Key = keys;des.IV = des.Key;byte[] inputByteArray = System.Text.Encoding.UTF8.GetBytes(content);MemoryStream ms = new MemoryStream();CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);cs.Write(inputByteArray, 0, inputByteArray.Length);cs.FlushFinalBlock();StringBuilder sb = new StringBuilder();foreach (var item in ms.ToArray()){sb.Append(item.ToString());sb.Append("_");}if (sb.Length > 0) sb = sb.Remove(sb.Length - 1, 1);return sb.ToString();}catch (System.Exception e){return content;}}/// <summary> /// 解密数据 /// 如秘钥为空 则返回原文/// </summary> /// <param name="content">密文</param> /// <param name="desKey">密匙</param> /// <returns>解密失败返回空字符串</returns> public string DesDecrypt(string content, string desKey){try{if (string.IsNullOrEmpty(desKey)) return content;DESCryptoServiceProvider des = new DESCryptoServiceProvider();des.Mode = CipherMode.ECB;var keys = new byte[8];if (desKey.Length < 8){var tmpkeys = System.Text.Encoding.UTF8.GetBytes(desKey);for (int i = 0; i < keys.Length; i++){if (tmpkeys.Length > i)keys[i] = tmpkeys[i];elsekeys[i] = 0;}}else keys = System.Text.Encoding.UTF8.GetBytes(desKey.Substring(0, 8));des.Key = keys;des.IV = des.Key;var data = content.Split('_');byte[] inputByteArray = new byte[data.Length]; ;for (int i = 0; i < data.Length; i++){inputByteArray[i] = Convert.ToByte(data[i]);}MemoryStream ms = new MemoryStream();CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);cs.Write(inputByteArray, 0, inputByteArray.Length);cs.FlushFinalBlock();System.Text.Encoding encoding = new System.Text.UTF8Encoding();return encoding.GetString(ms.ToArray());}catch (System.Exception e){return "";}}/// <summary> /// 加密数据 /// </summary> /// <param name="encryptString">加密前文本</param> /// <returns></returns> public string DesEncrypt(string encryptString){string result;try{byte[] bytes = Encoding.UTF8.GetBytes(EncryptKey.Substring(0, 8));byte[] keys = Keys;byte[] bytes2 = Encoding.UTF8.GetBytes(encryptString);DESCryptoServiceProvider dESCryptoServiceProvider = new DESCryptoServiceProvider();MemoryStream memoryStream = new MemoryStream();CryptoStream cryptoStream = new CryptoStream(memoryStream,dESCryptoServiceProvider.CreateEncryptor(bytes, keys), CryptoStreamMode.Write);cryptoStream.Write(bytes2, 0, bytes2.Length);cryptoStream.FlushFinalBlock();result = Convert.ToBase64String(memoryStream.ToArray());}catch{result = encryptString;}return result;}/// <summary> /// 解密数据 /// </summary> /// <param name="decryptString">密文</param> /// <returns>解密失败返回空字符串</returns> public string DesDecrypt(string decryptString){string result;try{byte[] bytes = Encoding.UTF8.GetBytes(EncryptKey);byte[] keys = Keys;byte[] array = Convert.FromBase64String(decryptString);DESCryptoServiceProvider dESCryptoServiceProvider = new DESCryptoServiceProvider();MemoryStream memoryStream = new MemoryStream();CryptoStream cryptoStream = new CryptoStream(memoryStream,dESCryptoServiceProvider.CreateDecryptor(bytes, keys), CryptoStreamMode.Write);cryptoStream.Write(array, 0, array.Length);cryptoStream.FlushFinalBlock();result = Encoding.UTF8.GetString(memoryStream.ToArray());}catch{result = decryptString;}return result;}#endregion#region Base64加密解密/// <summary>/// Base64加密/// </summary>/// <param name="content">需要加密的字符串</param>/// <param name="encode">字符的编码,默认null=UTF8Encoding</param>/// <returns></returns>public string Base64Encrypt(string content, Encoding encode = null){if (encode == null) encode = new UTF8Encoding();return Convert.ToBase64String(encode.GetBytes(content));}/// <summary>/// Base64解密/// </summary>/// <param name="content">需要解密的字符串</param>/// <param name="encode">字符的编码,默认null=UTF8Encoding</param>/// <returns></returns>public string Base64Decrypt(string content, Encoding encode = null){if (encode == null) encode = new UTF8Encoding();return encode.GetString(Convert.FromBase64String(content));}#endregion}
}测试代码:private void MD5Encrypt_Click(object sender, EventArgs e){this.txtMd5Value.Text=EncryptHelpers.Instance.MD5Encrypt(this.txtMd5Key.Text.Trim());}private void MD5Encrypt16_Click(object sender, EventArgs e){this.txtMd5Value.Text = EncryptHelpers.Instance.MD5Encrypt16(this.txtMd5Key.Text.Trim());}private void DesEncrypt_Click(object sender, EventArgs e){this.txtDesValue.Text = EncryptHelpers.Instance.DesEncrypt(this.txtDesKey.Text.Trim(),"医技预约平台");}private void DesDecrypt_Click(object sender, EventArgs e){this.txtDesValue.Text = EncryptHelpers.Instance.DesDecrypt(this.txtDesValue.Text.Trim(), "医技预约平台");}private void Base64Encrypt_Click(object sender, EventArgs e){this.txtBaseValue.Text = EncryptHelpers.Instance.Base64Encrypt(this.txtBaseKey.Text.Trim());}private void Base64Decrypt_Click(object sender, EventArgs e){this.txtBaseValue.Text = EncryptHelpers.Instance.Base64Decrypt(this.txtBaseValue.Text.Trim());}private void DesEncrypt2_Click(object sender, EventArgs e){this.txtDesValue2.Text = EncryptHelpers.Instance.DesEncrypt(this.txtDesKey2.Text.Trim());}private void DesDecrypt2_Click(object sender, EventArgs e){this.txtDesValue2.Text = EncryptHelpers.Instance.DesDecrypt(this.txtDesValue2.Text.Trim());}

字符串加密、解密算法相关推荐

  1. java 实现 DES加密 解密算法

    DES算法的入口参数有三个:Key.Data.Mode.其中Key为8个字节共64位,是DES算法的工作密钥:Data也为8个字节64位,是要被加密或被解密的数据:Mode为DES的工作方式,有两种: ...

  2. 【Android 安全】DEX 加密 ( Java 工具开发 | 加密解密算法 API | 编译代理 Application 依赖库 | 解压依赖库 aar 文件 )

    文章目录 一.加密解密算法 API 二.编译代理 Application 依赖库 三.解压代理 Application 依赖库 aar 文件 参考博客 : [Android 安全]DEX 加密 ( 常 ...

  3. AES加密解密算法Java实现

    AES加密算法是密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准.这个标准用来替代原先的DE ...

  4. TEA、XTEA、XXTEA加密解密算法

    参考:TEA.XTEA.XXTEA加密解密算法 地址:https://blog.csdn.net/gsls200808/article/details/48243019 其他相关博文链接:tea系列加 ...

  5. java 加密_Java版SMS4加密解密算法

    特别说明:该专栏文章均来源自微信公众号<大数据实战演练>,欢迎关注! 前言 最近工作中需要实现HBase自定义扩展sms4加密,今天就先来说一下Java版的SMS4加密解密算法的具体实现. ...

  6. DES加密解密算法(前端后端)

    DES加密解密算法(前端&后端) 原作者 阿弥陀佛1114  原文链接:https://blog.csdn.net/zong1114/article/details/51754470 DES对 ...

  7. md5加密以及可逆的加密解密算法

    md5加密 package gov.mof.fasp2.gcfr.adjustoffset.adjust; import java.security.MessageDigest; public cla ...

  8. java变短加密解密算法_java----加密/解密常用算法

    一.常用的加密/解密算法 1.Base64 严格来说,Base64不是一种加密/解密算法,而是一种编码方式,多用于解决中文乱码中. 常用场景:对文件.URL等进行Base64编码,以字符串方式发送给对 ...

  9. 异或(XOR)运算加密/解密算法

    本文将介绍一个简单易用的加密/解密算法:使用异或(XOR)运算.本算法原理简单,旨在使读者对信息的加密/解密有一个更加直观的印象. XOR算法原理 从加密的主要方法看,换位法过于简单,特别是对于数据量 ...

  10. C# DES加密解密算法

    C# DES加密解密算法 #region DES Class /// <summary> /// ClassName: DES 加密类 /// DES加密.解密类库,字符串加密结果使用BA ...

最新文章

  1. bt下载加速 BitTorrent trackers服务器列表
  2. RAFT 寻找一种易于理解的一致性算法(扩展版)
  3. springboot环境搭建及入门必知
  4. HTTP协议具体解释
  5. php 命名空间通俗易懂_PHP进阶由浅入深掌握面向对象开发
  6. 不打游戏还整个i7 8700的弊端,完全用不上
  7. 安卓导航车机root方法_远程调试在Linux车机中的应用
  8. ruby基本语法(2)
  9. 全国超300所大学图书馆收藏本人作品
  10. NoSQL数据库兴起
  11. 小程序“成语猜题”部分答案,总共28667题
  12. SLAM数据集(tum/kitti)轨迹对齐与结果评估
  13. android 推送图标大小,设计方法论:一种统一图标大小的方法
  14. 台币nbsp;日元nbsp;没有小数位问题
  15. phxqueue java_微信开源PhxQueue:高可用、高可靠、高性能的分布式队列的几个问题...
  16. 在平板电脑与移动3G大爆炸的时代 昔日霸主微软的反击
  17. TeamTalk 详细介绍
  18. 【数据处理】matlibplot绘图颜色对照表
  19. 个人密码解决方案(草稿)
  20. discuz7.2帖子管理

热门文章

  1. 渡一教育学习面向对象
  2. 实习笔记Day8(2022.8.16)
  3. oracle+xquery函数,oracle_xquery介绍.doc
  4. 高收益债券信用风险评估:预期损失率模型
  5. Navigation跳跃导航
  6. 程序员的-多做多错,少做少错,不做不错
  7. python爬取地图数据_高德3地图之python爬取POI数据及其边界经纬度(根据关键字在城市范围内搜索)...
  8. 视频管理软件技术分析报告(二)--商业VMS产品分析(Milestone)
  9. 测量学(四)测量点制图转CAD格式之注记转换
  10. [精选网址]MSDN简体中文在线