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的更多相关文章

  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. 记录一下linux下两个工具和一个伪代码转换流程图工具

    1.Linux下文本浏览器lynx 文本浏览器,顾名思义就是只有文本的浏览器,这个浏览器可以在命令行下打开使用 2.CURL 在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可 ...

  2. ABC007D Small Multiple[最短路]

    题意:求$K$的倍数中数位和的最小值. 一开始有一种思路:由于产生答案的数字可能非常大,不便枚举,考虑转化为构造一个数字可以有$x\mod k=0$.然后二分答案数位和,数位DP检验是否存在,但是由于 ...

  3. cnblogs设置各级标题样式和目录

    向博客园申请js权限 我们需要进入博客园自定义博客模板的页面,向博客园管理团队申请页面运行js的权限. [博客园]->[设置]->[博客设置],点击页面上的js权限申请,然后填写申请的理由 ...

  4. node 打包内存溢出 FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory

    electron-vue加载了地图 openLayer后,打包就包内存溢出 解决办法: "build": "node --max_old_space_size=4096 ...

  5. kubernetes的搭建以及dashboard页面的启动

    ###查看kubernetes状态 ``` kubectl get pods -A #查看相关状态 kubectl get cs #查看k8s的ready状态 kubectl get node #查看 ...

  6. yii ActiveRecord

    在活动记录里自定义属性(数据表里没有的属性), 起初没有注意到问题. 在这个继承了activeRecord的模型中, 还自定义了很多方法,  此为前提.  出现的问题是: 使用属性获取不到数据库的字段 ...

  7. TTTTTTTTTTTTTT hdu 5763 Another Meaning 哈希+dp

    Another Meaning Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)T ...

  8. svn版本更新

    1.查看当前版本:svn --version 2.配置svn yum源 tee /etc/yum.repos.d/wandisco-svn.repo <<-'EOF' [WandiscoS ...

  9. Centos 7自定义屏幕分辨率

    $ xrandrScreen 0: minimum 1 x 1, current 1680 x 900, maximum 8192 x 8192Virtual1 connected primary 1 ...

  10. 开源!js实现微信/QQ直接跳转到支付宝APP打开口令领红包!附:demo

    最近支付宝的领红包可真是刷爆了各个微信群啊,满群都是支付宝口令. 可是这样推广可不是办法,又要复制又要打开支付宝又要点领取,太麻烦了. 于是乎,提出了一个疑问!是否可以在微信里面点一个链接然后直接打开 ...