UBT框架加解密工具项目 UBT.Framework.Encryption
DESEncrypt.cs
- //=====================================================================================
- // All Rights Reserved , Copyright@ UBT 2016
- //=====================================================================================
- using System;
- using System.Configuration;
- using System.Security.Cryptography;
- using System.Text;
- using System.Text.RegularExpressions;
- namespace UBT.Encrypt.Tools
- {
- /// <summary>
- /// 版 本:2.0
- /// 创 建:zhangpeng
- /// 日 期:2017-04-26 14:41
- /// 描 述:DES 加密、解密帮助类,加入深度加解密算法
- /// </summary>
- public class DESEncrypt
- {
- /// <summary>
- /// 密钥,必须8位
- /// </summary>
- private static readonly string StrKey = string.IsNullOrEmpty(ConfigurationManager.AppSettings["Key"]) ? "MJShanxi" : ConfigurationManager.AppSettings["Key"];
- /// <summary>
- /// 源字符串
- /// </summary>
- private static readonly string SourceStr = string.IsNullOrEmpty(ConfigurationManager.AppSettings["SourceStr"]) ? "s" : ConfigurationManager.AppSettings["SourceStr"];
- /// <summary>
- /// 替换字符串
- /// </summary>
- private static readonly string ReplaceStr = string.IsNullOrEmpty(ConfigurationManager.AppSettings["ReplaceStr"]) ? "mjshanxi" : ConfigurationManager.AppSettings["ReplaceStr"];
- #region DES加密
- /// <summary>
- /// DES加密
- /// </summary>
- /// <param name="text">要加密的字符串</param>
- /// <returns>以Base64格式返回的加密字符串</returns>
- public static string Encrypt(string text)
- {
- return Encrypt(text, StrKey);
- }
- /// <summary>
- /// DES加密
- /// </summary>
- /// <param name="text">要加密的字符串</param>
- /// <param name="sKey">密钥,且必须8位</param>
- /// <returns>以Base64格式返回的加密字符串</returns>
- public static string Encrypt(string text, string sKey)
- {
- using (DESCryptoServiceProvider des = new DESCryptoServiceProvider())
- {
- byte[] inputByteArray;
- inputByteArray = Encoding.UTF8.GetBytes(text);
- des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
- des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
- System.IO.MemoryStream ms = new System.IO.MemoryStream();
- using (CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write))
- {
- cs.Write(inputByteArray, , inputByteArray.Length);
- cs.FlushFinalBlock();
- string str = Convert.ToBase64String(ms.ToArray());
- ms.Close();
- return str;
- }
- }
- }
- #endregion
- #region DES解密
- /// <summary>
- /// DES解密
- /// </summary>
- /// <param name="text"></param>
- /// <returns></returns>
- public static string Decrypt(string text)
- {
- if (!string.IsNullOrEmpty(text))
- {
- return Decrypt(text, StrKey);
- }
- else
- {
- return "";
- }
- }
- /// <summary>
- /// 解密数据
- /// </summary>
- /// <param name="text">要解密的以Base64</param>
- /// <param name="sKey">密钥,且必须为8位</param>
- /// <returns>已解密的字符串</returns>
- public static string Decrypt(string text, string sKey)
- {
- if (text.Contains("Password"))//如果包含Password,表示没有加密
- {
- return text;
- }
- //确信当前字符串,是加密字符串
- if ((text.Length % ) != )//因为加密后是base64,所以用4来求余进行验证
- {
- return text;
- }
- byte[] inputByteArray = Convert.FromBase64String(text);
- using (DESCryptoServiceProvider des = new DESCryptoServiceProvider())
- {
- des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
- des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
- System.IO.MemoryStream ms = new System.IO.MemoryStream();
- CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);
- cs.Write(inputByteArray, , inputByteArray.Length);
- cs.FlushFinalBlock();
- return Encoding.UTF8.GetString(ms.ToArray());
- }
- }
- #endregion
- #region 深度加密
- /// <summary>
- /// 深度加密
- /// </summary>
- /// <param name="pToEncrypt">要加密的字符串</param>
- /// <param name="sKey">密钥,且必须8位</param>
- /// <returns>以Base64格式返回的深度加密字符串</returns>
- public static string DepthEncrypt(string pToEncrypt, string sKey)
- {
- //一级加密
- string yetEncryStr = Encrypt(pToEncrypt, sKey);
- //二级加密
- string secondEncryStr = Regex.Replace(yetEncryStr, SourceStr, ReplaceStr);
- return secondEncryStr;
- }
- /// <summary>
- /// 深度加密
- /// </summary>
- /// <param name="pToEncrypt">要加密的字符串</param>
- /// <returns>以Base64格式返回的深度加密字符串</returns>
- public static string DepthEncrypt(string pToEncrypt)
- {
- //一级加密
- string yetEncryStr = Encrypt(pToEncrypt, StrKey);
- //二级加密
- string secondEncryStr = Regex.Replace(yetEncryStr, SourceStr, ReplaceStr);
- return secondEncryStr;
- }
- #endregion
- #region 深度解密
- /// <summary>
- /// 深度解密
- /// </summary>
- /// <param name="pToDecrypt">要解密的以Base64</param>
- /// <param name="sKey">密钥,且必须8位</param>
- /// <returns>已解密的字符串</returns>
- public static string DepthDecrypt(string pToDecrypt, string sKey)
- {
- //对原加密字符串,作特殊字符替换(一级解密)
- string secondDecryptStr = Regex.Replace(pToDecrypt, ReplaceStr, SourceStr);
- //二级解密
- var yetDecrytString = Decrypt(secondDecryptStr, sKey);
- return yetDecrytString;
- }
- /// <summary>
- /// 深度解密
- /// </summary>
- /// <param name="pToDecrypt">要解密的以Base64</param>
- /// <returns>已解密的字符串</returns>
- public static string DepthDecrypt(string pToDecrypt)
- {
- //对原加密字符串,作特殊字符替换(一级解密)
- string secondDecryptStr = Regex.Replace(pToDecrypt, ReplaceStr, SourceStr);
- //二级解密
- var yetDecrytString = Decrypt(secondDecryptStr, StrKey);
- return yetDecrytString;
- }
- #endregion
- }
- }
FrmEncrypt.cs
- using System;
- using System.Configuration;
- using System.Security.Cryptography;
- using System.Text;
- using System.Text.RegularExpressions;
- using System.Windows.Forms;
- namespace UBT.Encrypt.Tools
- {
- public partial class FrmEncrypt : Form
- {
- public FrmEncrypt()
- {
- InitializeComponent();
- var longDate = DateTime.Now.ToLongDateString();
- var longTime = DateTime.Now.ToLongTimeString();
- var formatDate = DateTime.Now.ToString("yyyyMMddHHmmssffff");
- }
- /// <summary>
- /// 生成密钥
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void button1_Click(object sender, EventArgs e)
- {
- string unEncryStr = this.txtUnEncryStr.Text.Trim();
- if (unEncryStr == "")
- {
- MessageBox.Show("请输入待加密的字符串!");
- return;
- }
- //深度加密
- var secondEncryStr = DESEncrypt.DepthEncrypt(unEncryStr);
- this.txtEncryStr.Text = secondEncryStr;
- }
- /// <summary>
- /// 解密
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void btnDecrypt_Click(object sender, EventArgs e)
- {
- var str = txtEncryStr.Text;
- var yetDecrytString = DESEncrypt.DepthDecrypt(str);
- txtDecryptStr.Text = yetDecrytString;
- }
- }
- }
UBT框架加解密工具项目 UBT.Framework.Encryption的更多相关文章
- RSA加解密工具类RSAUtils.java,实现公钥加密私钥解密和私钥解密公钥解密
package com.geostar.gfstack.cas.util; import org.apache.commons.codec.binary.Base64; import javax.cr ...
- Java中的AES加解密工具类:AESUtils
本人手写已测试,大家可以参考使用 package com.mirana.frame.utils.encrypt; import com.mirana.frame.constants.SysConsta ...
- Java中的RSA加解密工具类:RSAUtils
本人手写已测试,大家可以参考使用 package com.mirana.frame.utils.encrypt; import com.mirana.frame.utils.log.LogUtils; ...
- XJar: Spring-Boot JAR 包加/解密工具,避免源码泄露以及反编译
XJar: Spring-Boot JAR 包加/解密工具,避免源码泄露以及反编译 <?xml version="1.0" encoding="UTF-8" ...
- CTF-Tools 一款CTF古典密码加解密工具
CTF-Tools 一款CTF古典密码加解密工具 工具截图 工具简介 一款CTF编码.解码.加密.解密工具. 支持的编码解码: URL-UTF-8 URL-GB2312 Unicode Escape( ...
- QuickBase64 - Android 下拉通知栏快捷base64加解密工具
Android Quick Setting Tile Base64 Encode/Decode Tool Android 下拉通知栏快捷 base64 加解密,自动将剪切板的内容进行 base64 E ...
- vue 核心加解密工具类 方法
1 /* base64 加解密 2 */ 3 export let Base64 = require('js-base64').Base64 4 5 /* md5 加解密 6 */ 7 export ...
- DES加解密工具类
这两天在跟友商对接接口,在对外暴露接口的时候,因为友商不需要登录即可访问对于系统来说存在安全隐患,所以需要友商在调用接口的时候需要将数据加密,系统解密验证后才执行业务.所有的加密方式并不是万能的,只是 ...
- Des加解密工具
import java.security.Key; import java.security.Security; import java.util.Date; import javax.crypto. ...
随机推荐
- zencart新增categories分类表字段步骤
zencart新增分类字段步骤 1.categories表新增字段related_categories.related_products ) ) NOT NULL; 2.修改admin\categor ...
- ABC065D Built[最小生成树]
这题和某道最短路题神似.对于任意点对,将他们连边,不如将他们分别沿$x,y$轴方向上点按顺序连起来,这样不仅可能多连通一些点,也花费更低,所以按照最短路那题的连边方式跑一个kruskal就行了. #i ...
- 小程序生成海报 canvas
前言 微信小程序需要生成海报进行朋友圈分享,但是不同的手机会有问题, 然后首先是图片的问题 图片 在模拟器上没有报错,可是真机测试却什么也没画出来. canvas.drawImage 是不支持网络图片 ...
- springboot整合jetty(转)
jdk1.8 springboot替换容器在网上搜索只需要两步如果不是可能就会报错Unable to start EmbeddedWebApplicationContext due to missin ...
- java——适配器模式、策略模式
适配器模式: https://www.cnblogs.com/honger/p/5970283.html 策略模式: https://www.jianshu.com/p/3bcf55cf83d3
- ant-design-vue 修改组件样式
/deep/ .ant-input { border-radius: 50px; }
- 浏览器表单自动填充默认样式 - autofill问题解决
这不知道是个什么神仙网站,解决办法写的这么清楚,页面有这么让人舒服 https://lhajh.github.io/css/chrome/2018/04/17/The-chrome-browser-f ...
- Visio:为什么按下方向键,选中的目标不动,绘图区(页面)却在移动
造冰箱的大熊猫,本文适用于Microsoft Visio 2007@cnblogs 2018/12/12 检查下键盘的“Scroll Lock”键是不是被激活了(键盘上对应的指示灯被点亮).Scrol ...
- sql 用表组织数据
一.四种完整性约束 1.实体完整性约束:不允许出现相同记录的数据 2.域完整性约束:对字段进行限定,不得插入不符合限定的数据 3.引用完整性:表与表之间的关系 4.自定义完整性约束:开发人员自己设定对 ...
- java 根据html模板生成html文件
1.代码部分 import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.boot.test. ...