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. ...
随机推荐
- Hdu 1517 巴什博奕变形
易知2-9为先手胜 继续递推下去 10-18 后手胜 再推发现19-162先手胜 即发现有9(9) 18(2*9) 162(9*2*9)..... #include<bits/stdc++.h& ...
- elasticsearch启动时遇到的错误
elasticsearch启动时遇到的错误 问题翻译过来就是:elasticsearch用户拥有的内存权限太小,至少需要262144: 解决: 切换到root用户 执行命令: sysctl -w vm ...
- BZOJ1491 [NOI2007]社交网络[最短路计数]
$n$非常的小,结合题目计算式可以想到$O(n^3)$暴枚$s,t,v$,看$v$在不在$s\to t$最短路上($dis_{s,v}+dis_{v,t}=dis_{s,v}$是$v$在两点最短路上的 ...
- puppet完全攻略(一)puppet应用原理及安装部署
puppet完全攻略(一)puppet应用原理及安装部署 2012-06-06 18:27:56 标签:puppet puppet应用原理 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出 ...
- maven报错1
错误1 错误2 缺少mapper文件 错误3 缺少映射文件 <!-- 如果不添加此节点mybatis的mapper.xml文件都会被漏掉. --> <build> <re ...
- python 多线程实现循环打印 abc
python 多线程实现循环打印 abc 好久没写过python了, 想自己实践一下把 非阻塞版 import threading import time def print_a(): global ...
- 灰度图像--图像分割 阈值处理之OTSU阈值
学习DIP第55天 转载请标明本文出处:***http://blog.csdn.net/tonyshengtan ***,出于尊重文章作者的劳动,转载请标明出处!文章代码已托管,欢迎共同开发:http ...
- zookeeper系列(二)zookeeper的使用--javaAPI
作者:leesf 掌控之中,才会成功:掌控之外,注定失败: 出处:http://www.cnblogs.com/leesf456/ (尊重原创,感谢作者整理的这么好,作者的部分内容添加了我的理解 ...
- python3笔记二十四:Mysql数据库操作命令
一:学习内容 Mysql操作命令:启动服务.停止服务.连接数据库.退出数据库.查看版本.显示当前时间.远程连接 数据库操作命令:创建数据库.删除数据库.切换数据库.查看当前选择的数据库 表操作命令:查 ...
- SRS之SrsConfig类
1. 类定义 1.1 SrsConfig 类 /** * the config service provider. * for the config supports reload, so never ...