DESEncrypt.cs

  1. //=====================================================================================
  2. // All Rights Reserved , Copyright@ UBT 2016
  3. //=====================================================================================
  4.  
  5. using System;
  6. using System.Configuration;
  7. using System.Security.Cryptography;
  8. using System.Text;
  9. using System.Text.RegularExpressions;
  10.  
  11. namespace UBT.Encrypt.Tools
  12. {
  13. /// <summary>
  14. /// 版 本:2.0
  15. /// 创 建:zhangpeng
  16. /// 日 期:2017-04-26 14:41
  17. /// 描 述:DES 加密、解密帮助类,加入深度加解密算法
  18. /// </summary>
  19. public class DESEncrypt
  20. {
  21. /// <summary>
  22. /// 密钥,必须8位
  23. /// </summary>
  24. private static readonly string StrKey = string.IsNullOrEmpty(ConfigurationManager.AppSettings["Key"]) ? "MJShanxi" : ConfigurationManager.AppSettings["Key"];
  25. /// <summary>
  26. /// 源字符串
  27. /// </summary>
  28. private static readonly string SourceStr = string.IsNullOrEmpty(ConfigurationManager.AppSettings["SourceStr"]) ? "s" : ConfigurationManager.AppSettings["SourceStr"];
  29. /// <summary>
  30. /// 替换字符串
  31. /// </summary>
  32. private static readonly string ReplaceStr = string.IsNullOrEmpty(ConfigurationManager.AppSettings["ReplaceStr"]) ? "mjshanxi" : ConfigurationManager.AppSettings["ReplaceStr"];
  33.  
  34. #region DES加密
  35. /// <summary>
  36. /// DES加密
  37. /// </summary>
  38. /// <param name="text">要加密的字符串</param>
  39. /// <returns>以Base64格式返回的加密字符串</returns>
  40. public static string Encrypt(string text)
  41. {
  42. return Encrypt(text, StrKey);
  43. }
  44. /// <summary>
  45. /// DES加密
  46. /// </summary>
  47. /// <param name="text">要加密的字符串</param>
  48. /// <param name="sKey">密钥,且必须8位</param>
  49. /// <returns>以Base64格式返回的加密字符串</returns>
  50. public static string Encrypt(string text, string sKey)
  51. {
  52. using (DESCryptoServiceProvider des = new DESCryptoServiceProvider())
  53. {
  54. byte[] inputByteArray;
  55. inputByteArray = Encoding.UTF8.GetBytes(text);
  56. des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
  57. des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
  58. System.IO.MemoryStream ms = new System.IO.MemoryStream();
  59. using (CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write))
  60. {
  61. cs.Write(inputByteArray, , inputByteArray.Length);
  62. cs.FlushFinalBlock();
  63. string str = Convert.ToBase64String(ms.ToArray());
  64. ms.Close();
  65. return str;
  66. }
  67.  
  68. }
  69.  
  70. }
  71.  
  72. #endregion
  73.  
  74. #region DES解密
  75. /// <summary>
  76. /// DES解密
  77. /// </summary>
  78. /// <param name="text"></param>
  79. /// <returns></returns>
  80. public static string Decrypt(string text)
  81. {
  82. if (!string.IsNullOrEmpty(text))
  83. {
  84. return Decrypt(text, StrKey);
  85. }
  86. else
  87. {
  88. return "";
  89. }
  90. }
  91. /// <summary>
  92. /// 解密数据
  93. /// </summary>
  94. /// <param name="text">要解密的以Base64</param>
  95. /// <param name="sKey">密钥,且必须为8位</param>
  96. /// <returns>已解密的字符串</returns>
  97. public static string Decrypt(string text, string sKey)
  98. {
  99. if (text.Contains("Password"))//如果包含Password,表示没有加密
  100. {
  101. return text;
  102. }
  103.  
  104. //确信当前字符串,是加密字符串
  105. if ((text.Length % ) != )//因为加密后是base64,所以用4来求余进行验证
  106. {
  107. return text;
  108. }
  109.  
  110. byte[] inputByteArray = Convert.FromBase64String(text);
  111.  
  112. using (DESCryptoServiceProvider des = new DESCryptoServiceProvider())
  113. {
  114. des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
  115. des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
  116. System.IO.MemoryStream ms = new System.IO.MemoryStream();
  117. CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);
  118. cs.Write(inputByteArray, , inputByteArray.Length);
  119. cs.FlushFinalBlock();
  120. return Encoding.UTF8.GetString(ms.ToArray());
  121. }
  122.  
  123. }
  124.  
  125. #endregion
  126.  
  127. #region 深度加密
  128. /// <summary>
  129. /// 深度加密
  130. /// </summary>
  131. /// <param name="pToEncrypt">要加密的字符串</param>
  132. /// <param name="sKey">密钥,且必须8位</param>
  133. /// <returns>以Base64格式返回的深度加密字符串</returns>
  134. public static string DepthEncrypt(string pToEncrypt, string sKey)
  135. {
  136. //一级加密
  137. string yetEncryStr = Encrypt(pToEncrypt, sKey);
  138. //二级加密
  139. string secondEncryStr = Regex.Replace(yetEncryStr, SourceStr, ReplaceStr);
  140.  
  141. return secondEncryStr;
  142. }
  143.  
  144. /// <summary>
  145. /// 深度加密
  146. /// </summary>
  147. /// <param name="pToEncrypt">要加密的字符串</param>
  148. /// <returns>以Base64格式返回的深度加密字符串</returns>
  149. public static string DepthEncrypt(string pToEncrypt)
  150. {
  151. //一级加密
  152. string yetEncryStr = Encrypt(pToEncrypt, StrKey);
  153. //二级加密
  154. string secondEncryStr = Regex.Replace(yetEncryStr, SourceStr, ReplaceStr);
  155.  
  156. return secondEncryStr;
  157. }
  158.  
  159. #endregion
  160.  
  161. #region 深度解密
  162. /// <summary>
  163. /// 深度解密
  164. /// </summary>
  165. /// <param name="pToDecrypt">要解密的以Base64</param>
  166. /// <param name="sKey">密钥,且必须8位</param>
  167. /// <returns>已解密的字符串</returns>
  168. public static string DepthDecrypt(string pToDecrypt, string sKey)
  169. {
  170. //对原加密字符串,作特殊字符替换(一级解密)
  171. string secondDecryptStr = Regex.Replace(pToDecrypt, ReplaceStr, SourceStr);
  172. //二级解密
  173. var yetDecrytString = Decrypt(secondDecryptStr, sKey);
  174.  
  175. return yetDecrytString;
  176. }
  177.  
  178. /// <summary>
  179. /// 深度解密
  180. /// </summary>
  181. /// <param name="pToDecrypt">要解密的以Base64</param>
  182. /// <returns>已解密的字符串</returns>
  183. public static string DepthDecrypt(string pToDecrypt)
  184. {
  185. //对原加密字符串,作特殊字符替换(一级解密)
  186. string secondDecryptStr = Regex.Replace(pToDecrypt, ReplaceStr, SourceStr);
  187. //二级解密
  188. var yetDecrytString = Decrypt(secondDecryptStr, StrKey);
  189.  
  190. return yetDecrytString;
  191. }
  192. #endregion
  193. }
  194. }

FrmEncrypt.cs

  1. using System;
  2. using System.Configuration;
  3. using System.Security.Cryptography;
  4. using System.Text;
  5. using System.Text.RegularExpressions;
  6. using System.Windows.Forms;
  7.  
  8. namespace UBT.Encrypt.Tools
  9. {
  10. public partial class FrmEncrypt : Form
  11. {
  12.  
  13. public FrmEncrypt()
  14. {
  15. InitializeComponent();
  16.  
  17. var longDate = DateTime.Now.ToLongDateString();
  18. var longTime = DateTime.Now.ToLongTimeString();
  19. var formatDate = DateTime.Now.ToString("yyyyMMddHHmmssffff");
  20. }
  21.  
  22. /// <summary>
  23. /// 生成密钥
  24. /// </summary>
  25. /// <param name="sender"></param>
  26. /// <param name="e"></param>
  27. private void button1_Click(object sender, EventArgs e)
  28. {
  29. string unEncryStr = this.txtUnEncryStr.Text.Trim();
  30.  
  31. if (unEncryStr == "")
  32. {
  33. MessageBox.Show("请输入待加密的字符串!");
  34. return;
  35. }
  36.  
  37. //深度加密
  38. var secondEncryStr = DESEncrypt.DepthEncrypt(unEncryStr);
  39.  
  40. this.txtEncryStr.Text = secondEncryStr;
  41.  
  42. }
  43.  
  44. /// <summary>
  45. /// 解密
  46. /// </summary>
  47. /// <param name="sender"></param>
  48. /// <param name="e"></param>
  49. private void btnDecrypt_Click(object sender, EventArgs e)
  50. {
  51. var str = txtEncryStr.Text;
  52. var yetDecrytString = DESEncrypt.DepthDecrypt(str);
  53. txtDecryptStr.Text = yetDecrytString;
  54. }
  55.  
  56. }
  57. }

UBT框架加解密工具项目 UBT.Framework.Encryption的更多相关文章

  1. RSA加解密工具类RSAUtils.java,实现公钥加密私钥解密和私钥解密公钥解密

    package com.geostar.gfstack.cas.util; import org.apache.commons.codec.binary.Base64; import javax.cr ...

  2. Java中的AES加解密工具类:AESUtils

    本人手写已测试,大家可以参考使用 package com.mirana.frame.utils.encrypt; import com.mirana.frame.constants.SysConsta ...

  3. Java中的RSA加解密工具类:RSAUtils

    本人手写已测试,大家可以参考使用 package com.mirana.frame.utils.encrypt; import com.mirana.frame.utils.log.LogUtils; ...

  4. XJar: Spring-Boot JAR 包加/解密工具,避免源码泄露以及反编译

    XJar: Spring-Boot JAR 包加/解密工具,避免源码泄露以及反编译 <?xml version="1.0" encoding="UTF-8" ...

  5. CTF-Tools 一款CTF古典密码加解密工具

    CTF-Tools 一款CTF古典密码加解密工具 工具截图 工具简介 一款CTF编码.解码.加密.解密工具. 支持的编码解码: URL-UTF-8 URL-GB2312 Unicode Escape( ...

  6. QuickBase64 - Android 下拉通知栏快捷base64加解密工具

    Android Quick Setting Tile Base64 Encode/Decode Tool Android 下拉通知栏快捷 base64 加解密,自动将剪切板的内容进行 base64 E ...

  7. vue 核心加解密工具类 方法

    1 /* base64 加解密 2 */ 3 export let Base64 = require('js-base64').Base64 4 5 /* md5 加解密 6 */ 7 export ...

  8. DES加解密工具类

    这两天在跟友商对接接口,在对外暴露接口的时候,因为友商不需要登录即可访问对于系统来说存在安全隐患,所以需要友商在调用接口的时候需要将数据加密,系统解密验证后才执行业务.所有的加密方式并不是万能的,只是 ...

  9. Des加解密工具

    import java.security.Key; import java.security.Security; import java.util.Date; import javax.crypto. ...

随机推荐

  1. zencart新增categories分类表字段步骤

    zencart新增分类字段步骤 1.categories表新增字段related_categories.related_products ) ) NOT NULL; 2.修改admin\categor ...

  2. ABC065D Built[最小生成树]

    这题和某道最短路题神似.对于任意点对,将他们连边,不如将他们分别沿$x,y$轴方向上点按顺序连起来,这样不仅可能多连通一些点,也花费更低,所以按照最短路那题的连边方式跑一个kruskal就行了. #i ...

  3. 小程序生成海报 canvas

    前言 微信小程序需要生成海报进行朋友圈分享,但是不同的手机会有问题, 然后首先是图片的问题 图片 在模拟器上没有报错,可是真机测试却什么也没画出来. canvas.drawImage 是不支持网络图片 ...

  4. springboot整合jetty(转)

    jdk1.8 springboot替换容器在网上搜索只需要两步如果不是可能就会报错Unable to start EmbeddedWebApplicationContext due to missin ...

  5. java——适配器模式、策略模式

    适配器模式: https://www.cnblogs.com/honger/p/5970283.html 策略模式: https://www.jianshu.com/p/3bcf55cf83d3

  6. ant-design-vue 修改组件样式

    /deep/ .ant-input { border-radius: 50px; }

  7. 浏览器表单自动填充默认样式 - autofill问题解决

    这不知道是个什么神仙网站,解决办法写的这么清楚,页面有这么让人舒服 https://lhajh.github.io/css/chrome/2018/04/17/The-chrome-browser-f ...

  8. Visio:为什么按下方向键,选中的目标不动,绘图区(页面)却在移动

    造冰箱的大熊猫,本文适用于Microsoft Visio 2007@cnblogs 2018/12/12 检查下键盘的“Scroll Lock”键是不是被激活了(键盘上对应的指示灯被点亮).Scrol ...

  9. sql 用表组织数据

    一.四种完整性约束 1.实体完整性约束:不允许出现相同记录的数据 2.域完整性约束:对字段进行限定,不得插入不符合限定的数据 3.引用完整性:表与表之间的关系 4.自定义完整性约束:开发人员自己设定对 ...

  10. java 根据html模板生成html文件

    1.代码部分 import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.boot.test. ...