在VS中用WindowsApplication做一个exe程序,用来给数据库密码加密,加密代码如下

 private void generateBtn_Click(object sender, EventArgs e)
{
string pwd = pwdtxt.Text;
if(pwd==null ||pwd.Length==)
{
return;
}
string resultPwd = EncryptDES(pwd,"");
resultPwdTxt.Text = resultPwd;
}

加密生成按钮代码

/**/
/// <summary>
/// DES加密字符串
/// </summary>
/// <param name="encryptString">待加密的字符串</param>
/// <param name="encryptKey">加密密钥</param>
/// <returns>加密成功返回加密后的字符串,失败返回源串</returns>
private string EncryptDES(string encryptString, string encryptKey)
{
try
{
if (encryptKey.Length < )
{
encryptKey += "@#$%^&*!";
}
byte[] rgbKey = Encoding.UTF8.GetBytes(encryptKey.Substring (,));
byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString);
DESCryptoServiceProvider dCSP = new DESCryptoServiceProvider();
MemoryStream mStream = new MemoryStream();
CryptoStream cStream = new CryptoStream(mStream, dCSP.CreateEncryptor(rgbKey, rgbKey), CryptoStreamMode.Write);
cStream.Write(inputByteArray, , inputByteArray.Length);
cStream.FlushFinalBlock();
return Convert.ToBase64String(mStream.ToArray());
}
catch
{
return encryptString;
}
}

DES加密代码

        /**/
/// <summary>
/// DES解密字符串
/// </summary>
/// <param name="decryptString">待解密的字符串</param>
/// <param name="decryptKey">解密密钥,和加密密钥相同</param>
/// <returns>解密成功返回解密后的字符串,失败返源串</returns> private string DecryptDES(string decryptString, string decryptKey)
{
try
{
if (decryptKey.Length < )
{
decryptKey += "@#$%^&*!";
}
byte[] rgbKey = Encoding.UTF8.GetBytes(decryptKey.Substring (,));
byte[] inputByteArray = Convert.FromBase64String(decryptString);
DESCryptoServiceProvider DCSP = new DESCryptoServiceProvider();
MemoryStream mStream = new MemoryStream();
CryptoStream cStream = new CryptoStream(mStream, DCSP.CreateDecryptor(rgbKey, rgbKey), CryptoStreamMode.Write);
cStream.Write(inputByteArray, , inputByteArray.Length);
cStream.FlushFinalBlock();
return Encoding.UTF8.GetString(mStream.ToArray());
}
catch
{
return decryptString;
}
} private void button1_Click(object sender, EventArgs e)
{
string resultPwd = resultPwdTxt.Text;
string pwd = DecryptDES(resultPwd, "");
textBox1.Text = pwd;
}

解密测试代码

下面是.net对数据库连接字符串中加密的密码进行密码解密

public static string getdecodePwd(string currentConnectionStr)
{
Regex regex = new Regex("(;Password=)(.*)(;)", RegexOptions.IgnoreCase);
MatchCollection matcheCollection = regex.Matches(currentConnectionStr);
foreach (Match match in matcheCollection)
{
GroupCollection groups = match.Groups;
if (groups.Count == )
{
string enpwd = groups[].Value;
string depwd = DecryptDES(enpwd, "");
currentConnectionStr = regex.Replace(currentConnectionStr, ";Password=" + depwd + ";");
}
}
return currentConnectionStr;
} private static string DecryptDES(string decryptString, string decryptKey)
{
try
{
if (decryptKey.Trim().Length < )
{
decryptKey += "@#$%^&*!";
}
byte[] rgbKey = Encoding.UTF8.GetBytes(decryptKey.Substring(, ));
byte[] inputByteArray = Convert.FromBase64String(decryptString);
DESCryptoServiceProvider DCSP = new DESCryptoServiceProvider();
MemoryStream mStream = new MemoryStream();
CryptoStream cStream = new CryptoStream(mStream, DCSP.CreateDecryptor(rgbKey, rgbKey), CryptoStreamMode.Write);
cStream.Write(inputByteArray, , inputByteArray.Length);
cStream.FlushFinalBlock();
return Encoding.UTF8.GetString(mStream.ToArray());
}
catch
{
return decryptString;
}
}

.net密码解密

下面是javat对数据库连接字符串中加密的密码进行密码解密

public static String getdecodePwd(String currentConnectionStr){
Pattern regex = Pattern.compile("(;Password=)(.*)(;)",Pattern.CASE_INSENSITIVE);
Matcher matcher=regex.matcher(currentConnectionStr);
if(matcher.find()&&matcher.groupCount()==3){
String enpwd = matcher.group(2);
String depwd = DecryptDES(enpwd, "");
currentConnectionStr =currentConnectionStr.replaceAll("(;Password=)(.*)(;)",";Password=" + depwd + ";");
}
return currentConnectionStr;
} private static String DecryptDES(String decryptString,String decryptKey){
try{
if(decryptKey.trim().length()<8){
decryptKey += "@#$%^&*!";
}
String key=decryptKey.substring(0, 8);
BASE64Decoder decoder = new BASE64Decoder();
byte[] bytesrc = decoder.decodeBuffer(decryptString);
Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
DESKeySpec desKeySpec = new DESKeySpec(key.getBytes("UTF-8"));
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
SecretKey secretKey = keyFactory.generateSecret(desKeySpec);
IvParameterSpec iv = new IvParameterSpec(key.getBytes("UTF-8"));
cipher.init(Cipher.DECRYPT_MODE, secretKey, iv);
byte[] retByte = cipher.doFinal(bytesrc);
String result= new String(retByte);
return result;
}catch(Exception e){
e.printStackTrace();
return "";
}
}

java密码解密

.Net使用DES加密,.Net和java分别解密,并正则匹配替换加密密码为明文的更多相关文章

  1. java加密算法入门(二)-对称加密详解

    1.简单介绍 什么是对称加密算法? 对称加密算法即,加密和解密使用相同密钥的算法. 优缺点: 优点:算法公开.计算量小.加密速度快.加密效率高. 缺点: (1)交易双方都使用同样钥匙,安全性得不到保证 ...

  2. (iOS)Base64加密和DES加密、以及JAVA和iOS中DES加密统一性问题

    我们在项目中为了安全方面的考虑,通常情况下会选择一种加密方式对需要安全性的文本进行加密,而Base64加密和DES64加密是常用的加密算法.我记得我在前一个项目中使用的就是这两种加密算法的结合:Bas ...

  3. 运用加密技术保护Java源代码/定制ClassLoader

    为什么要加密? 对于传统的C或C++之类的语言来说,要在Web上保护源代码是很容易的,只要不发布它就可以.遗憾的是,Java程序的源代码很容易被别人偷看.只要有一个反编译器,任何人都可以分析别人的代码 ...

  4. 5.Java 加解密技术系列之 DES

    Java 加解密技术系列之 DES 序 背景 概念 基本原理 主要流程 分组模式 代码实现 结束语 序 前 几篇文章讲的都是单向加密算法,其中涉及到了 BASE64.MD5.SHA.HMAC 等几个比 ...

  5. java加密算法入门(三)-非对称加密详解

    1.简单介绍 这几天一直在看非对称的加密,相比之前的两篇内容,这次看了两倍多的时间还云里雾里的,所以这篇文章相对之前的两篇,概念性的东西多了些,另外是代码的每一步我都做了介绍,方便自己以后翻阅,也方便 ...

  6. RSA非对称加密简析-java

    1 非对称加密算法 1.1 概述 1976年,美国学者Dime和Henman为解决信息公开传送和密钥管理问题,提出一种新的密钥交换协议,允许在不安全的媒体上的通讯双方交换信息,安全地达成一致的密钥,这 ...

  7. java 加密工具类(MD5、RSA、AES等加密方式)

    1.加密工具类encryption MD5加密 import org.apache.commons.codec.digest.DigestUtils; /** * MD5加密组件 * * @autho ...

  8. 运用加密技术保护Java源代码(转)

    出处:运用加密技术保护Java源代码 为什么要加密? 对于传统的C或C++之类的语言来说,要在Web上保护源代码是很容易的,只要不发布它就可以.遗憾的是,Java程序的源代码很容易被别人偷看.只要有一 ...

  9. JAVA加解密之DES

    DES加密算法是一种分组密码,以64位为分组对数据加密,它的密钥长度是56位,加密解密用同一算法.DES加密算法是对密钥进行保密,而公开算法,包括加密和解密算法.这样,只有掌握了和发送方相同密钥的人才 ...

随机推荐

  1. 解决IDEA 中git 无法自动push 提交问题 Push failed: Failed with error: Could not read from remote repository.

    Push failed: Failed with error: Could not read from remote repository.

  2. Paxos算法细节详解(一)

    Paxos分析 最近研究paxos算法,看了许多相关的文章,概念还是很模糊,觉得还是没有掌握paxos算法的精髓,所以花了3天时间分析了libpaxos3的所有代码,此代码可以从https://bit ...

  3. 在android程序中打开另一个应用程序

    Android 开发有时需要在一个应用中启动另一个应用,比如Launcher加载所有的已安装的程序的列表,当点击图标时可以启动另一个应用. 一般我们知道了另一个应用的包名和MainActivity的名 ...

  4. 获取checkbox的选中的值

    var arr = new Array(); var idsObj = $("input [name='ids']"); for(var i=0;i<idsObj.lengt ...

  5. 《编程之美》practice

    1.2.中国象棋将帅问题 要求:只用一个字节存储变量,输出将帅不照面的所有可能位置. 思路简单,就是穷举让将和帅不在同一列即可,用char高四字节和低四字节分别存储将和帅的位置,位置编号从1到9.代码 ...

  6. java不确定参数个数方法例子

    package test; public class myTest { // 根据输入的参数动态生成数组 public static int max(int... param) { int max = ...

  7. App Store那些事儿

    5条建议优化手机游戏的苹果App Store截图 第一:遵守应用商店的规定 进入应用商店的每一款应用都要加上至少一张截图,并且尺寸大小必须符合应用商店的惯例. 第二:显示营销信息 既然你已经知道规定的 ...

  8. Xianfeng轻量级Java中间件平台:一期开发计划

    关于Xianfeng轻量级Java中间件平台,考虑到需要控制开发周期,通过分期开发的方式来实现一些基础的.常用的功能,这样有利于跟踪开发计划.一期的开发计划,主要实现的目标如下: 系统架构: 1.确定 ...

  9. Kubeadm 安装

    version 1.7.0 已解决: echo "1" > /proc/sys/net/bridge/bridge-nf-call-iptables error: faile ...

  10. c#包含类文件到csprj中

    public ActionResult Index() { XDocument doc = XDocument.Load(@"G:\users\kim.gao\documents\visua ...