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. ...
随机推荐
- BZOJ 世界树
第一步首先建虚树 第二步两遍dfs,一次从叶子到根,一次从根到叶子,就可以得到虚树中每个节点在M个询问点中离他最近的是哪个(简称为控制点) 第三步考虑计算答案,对于整个树,我们把节点化为三个种类 1. ...
- python 示例代码4
示例:用户输入和格式化输出(用户输入demo1)
- netstat Recv-Q和Send-Q判断包在哪端
通过netstat -anp可以查看机器的当前连接状态: Active Internet connections (servers and established) Proto Recv-Q Se ...
- nginx代理服务
代理----介于客户端和服务器之间 ICMP\POP\IMAP是邮件的收/发相关协议;RTMP是视频,音频等流媒体协议 http代理 正向代理 如果一个公司多台电脑中只有一台电脑能上网,那么不能上网的 ...
- Java-IPDeal工具类
/** * IP处理类 */ import java.sql.*; public class IPDeal { /** * 通过ip地址查询地区名称 * @param strip * @return ...
- 3 监控项、触发器、web监控、nginx监控
1.自定义监控项 Item 参数文档 https://www.zabbix.com/documentation/3.0/manual/config/items/itemtypes/zabbix_age ...
- SQL Server 删除日志文件
-- 查询日志文件名,用于下面删除 USE [data_name] GO SELECT file_id, name FROM sys.database_files /*删除指定数据库的日志文件*/ U ...
- Codevs 1213 解的个数(exgcd)
1213 解的个数 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 已知整数x,y满足如下面的条件: ax+by+c=0 p< ...
- vim8.1安装
win下直接就有gvim8.1.exe安装.但linux下直接从apt-get里面下载的vim都是远古版本,需要手动编译安装. 首先,下载vim源代码 git clone https://github ...
- JS中的原型链和原型的认识
这篇文章主要是学习一下JavaScript中的难点------原型和原型链 自定义一个对象 我们学习一门编程语言,必然要使用它完成一些特定的功能,而面向对象的语言因为符合人类的认知规律,在这方面做得很 ...