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. ...
随机推荐
- Linux之yum软件管理
YUM yum = Yellow dog Updater, Modified主要功能是更方便的添加/删除/更新RPM包.它能自动解决包的倚赖性问题. 它能便于管理大量系统的更新问题 yum特点 *可以 ...
- Python:pip 安装第三方库,速度很慢的解决办法
场景 想安装 Django 库 在 cmd 敲入命令 pip install Django 但是发现下载安装文件非常慢 原因:实质访问的下载网站是 https://pypi.Python.org/si ...
- Redis 安装 与 使用
下载Redis压缩包.地址:https://github.com/MicrosoftArchive/redis/releases 下载完成后,双击运行安装程序. 点击 Next . 点击 Next 等 ...
- centos7编译安装php7.3
处理问题 解决php configure: error: Cannot find ldap libraries in /usr/lib.错误 cp -frp /usr/lib64/libldap* ...
- Acwing-204-表达整数的奇怪方式(扩展中国剩余定理)
链接: https://www.acwing.com/problem/content/206/ 题意: 给定2n个整数a1,a2,-,an和m1,m2,-,mn,求一个最小的非负整数x,满足∀i∈[1 ...
- 【C#-批量插入数据到数据库】DataTable数据批量插入数据的库三种方法:SqlCommand.EcecuteNonQurery(),SqlDataAdapter.Update(DataTable) ,SqlBulkCopy.WriteToServer(Datatable)
第一种方法:使用SqlCommand.EcecuteNonQurery() 效率最慢 第二种方法:使用SqlDataAdapter.Update(DataTable) 效率次之 第三种方法:使用 ...
- java+大文件上传解决方案
众所皆知,web上传大文件,一直是一个痛.上传文件大小限制,页面响应时间超时.这些都是web开发所必须直面的. 本文给出的解决方案是:前端实现数据流分片长传,后面接收完毕后合并文件的思路. 实现文件夹 ...
- python创建文件夹方法
def mkdir(path): # 引入模块 import os # 去除首位空格 path = path.strip() # 去除尾部 \ 符号 path = path.rstrip(" ...
- mysql5.7提示密码过期的解决方法
首先把MySQL关闭 打开一个终端,输入 sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables 执行完命令后,再打开一个新的终端 sudo ...
- jquery文章链接
好文链接 1.jQuery是js的一个库,封装了js中常用的逻辑: 2.调用jQuery: (1).本地调用,在script标签的src属性里写上jQuery文件的地址. (2).使用CDN调用jQu ...