C#用DES加密JAVA用DES解密,JAVA用DES加密C#用DES解密的实现
这里贴出来的是可通用的C#与jav的DES加密类,希望对大家管用直接复制即可用
C#DES加密解密类
- ///<summary><![CDATA[加密解密帮助类]]></summary>
- public class Help_Encrypt
- {
- ///<summary><![CDATA[字符串DES加密函数]]></summary>
- ///<param name="str"><![CDATA[被加密字符串 ]]></param>
- ///<param name="key"><![CDATA[密钥 ]]></param>
- ///<returns><![CDATA[加密后字符串]]></returns>
- public static string Encode(string str, string key)
- {
- try
- {
- DESCryptoServiceProvider provider = new DESCryptoServiceProvider();
- provider.Key = Encoding.ASCII.GetBytes(key.Substring(0, 8));
- provider.IV = Encoding.ASCII.GetBytes(key.Substring(0, 8));
- byte[] bytes = Encoding.GetEncoding("GB2312").GetBytes(str);
- MemoryStream stream = new MemoryStream();
- CryptoStream stream2 = new CryptoStream(stream, provider.CreateEncryptor(), CryptoStreamMode.Write);
- stream2.Write(bytes, 0, bytes.Length);
- stream2.FlushFinalBlock();
- StringBuilder builder = new StringBuilder();
- foreach (byte num in stream.ToArray())
- {
- builder.AppendFormat("{0:X2}", num);
- }
- stream.Close();
- return builder.ToString();
- }
- catch (Exception) { return "xxxx"; }
- }
- ///<summary><![CDATA[字符串DES解密函数]]></summary>
- ///<param name="str"><![CDATA[被解密字符串 ]]></param>
- ///<param name="key"><![CDATA[密钥 ]]></param>
- ///<returns><![CDATA[解密后字符串]]></returns>
- public static string Decode(string str, string key)
- {
- try
- {
- DESCryptoServiceProvider provider = new DESCryptoServiceProvider();
- provider.Key = Encoding.ASCII.GetBytes(key.Substring(0, 8));
- provider.IV = Encoding.ASCII.GetBytes(key.Substring(0, 8));
- byte[] buffer = new byte[str.Length / 2];
- for (int i = 0; i < (str.Length / 2); i++)
- {
- int num2 = Convert.ToInt32(str.Substring(i * 2, 2), 0x10);
- buffer[i] = (byte)num2;
- }
- MemoryStream stream = new MemoryStream();
- CryptoStream stream2 = new CryptoStream(stream, provider.CreateDecryptor(), CryptoStreamMode.Write);
- stream2.Write(buffer, 0, buffer.Length);
- stream2.FlushFinalBlock();
- stream.Close();
- return Encoding.GetEncoding("GB2312").GetString(stream.ToArray());
- }
- catch (Exception) { return ""; }
- }
- }
- JAVADES加密解密类
- package com.bgxt.messages;
- import java.io.UnsupportedEncodingException;
- import java.security.*;
- import javax.crypto.Cipher;
- import javax.crypto.SecretKey;
- import javax.crypto.SecretKeyFactory;
- import javax.crypto.spec.DESKeySpec;
- import javax.crypto.spec.IvParameterSpec;
- /**
- * 字符串工具集合
- * @author Liudong
- */
- public class StringUtils {
- private static final String PASSWORD_CRYPT_KEY = XmlUtil.getConfig().getPasswdKey().substring(0,8);
- //private final static String DES = "DES";
- //private static final byte[] desKey;
- //解密数据
- public static String decrypt(String message,String key) throws Exception {
- byte[] bytesrc =convertHexString(message);
- 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);
- return new String(retByte);
- }
- public static byte[] encrypt(String message, String key)
- throws Exception {
- 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.ENCRYPT_MODE, secretKey, iv);
- return cipher.doFinal(message.getBytes("UTF-8"));
- }
- public static String encrypt(String value){
- String result="";
- try{
- value=java.net.URLEncoder.encode(value, "utf-8");
- result=toHexString(encrypt(value, PASSWORD_CRYPT_KEY)).toUpperCase();
- }catch(Exception ex){
- ex.printStackTrace();
- return "";
- }
- return result;
- }
- public static byte[] convertHexString(String ss)
- {
- byte digest[] = new byte[ss.length() / 2];
- for(int i = 0; i < digest.length; i++)
- {
- String byteString = ss.substring(2 * i, 2 * i + 2);
- int byteValue = Integer.parseInt(byteString, 16);
- digest[i] = (byte)byteValue;
- }
- return digest;
- }
- public static String toHexString(byte b[]) {
- StringBuffer hexString = new StringBuffer();
- for (int i = 0; i < b.length; i++) {
- String plainText = Integer.toHexString(0xff & b[i]);
- if (plainText.length() < 2)
- plainText = "0" + plainText;
- hexString.append(plainText);
- }
- return hexString.toString();
- }
- public static void main(String[] args) throws Exception {
- String value="01";
- System.out.println("加密数据:"+value);
- System.out.println("密码为:"+XmlUtil.getConfig().getPasswdKey());
- String a=encrypt( value);
- System.out.println("加密后的数据为:"+a);
- }
- }
C#用DES加密JAVA用DES解密,JAVA用DES加密C#用DES解密的实现的更多相关文章
- des加密解密——java加密,php解密
最近在做项目中,遇到des加密解密的问题. 场景是安卓app端用des加密,php这边需要解密.之前没有接触过des这种加密解密算法,但想着肯定会有demo.因此百度,搜了代码来用.网上代码也是鱼龙混 ...
- 使用C# DES解密java DES加密的字符串
转自 microAllen 最近需要使用C#的DES解密工具类解密字符串,但是要解密的字符串是使用java进行DES加密的,去网上查了关于C#和java关于DES加密解密的资料,发现可以相互加密解 ...
- des加密解密JAVA与.NET互通实例
JAVA版本 import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFacto ...
- DES加密解密 Java中运用
DES全称Data Encryption Standard,是一种使用密匙加密的块算法.现在认为是一种不安全的加密算法,因为现在已经有用穷举法攻破DES密码的报道了.尽管如此,该加密算法还是运用非常普 ...
- Android DES加密的CBC模式加密解密和ECB模式加密解密
DES加密共有四种模式:电子密码本模式(ECB).加密分组链接模式(CBC).加密反馈模式(CFB)和输出反馈模式(OFB). CBC模式加密: import java.security.Key; i ...
- Des加解密(Java端和Js端配套)解析
一.什么是DES加密 des对称加密,对称加密,是一种比较传统的加密方式,其加密运算.解密运算使用的是同样的密钥,信息的发送者和信息的接收者在进行信息的传输与处理时,必须共同持有该密码( ...
- 【转】asp.net(c#)加密解密算法之sha1、md5、des、aes实现源码详解
原文地址:http://docode.top/Article/Detail/10003 目录: 1..Net(C#)平台下Des加密解密源代码 2..Net(C#)平台下Aes加密解密源代码 3..N ...
- 各种加密解密函数(URL加密解密、sha1加密解密、des加密解密)
原文:各种加密解密函数(URL加密解密.sha1加密解密.des加密解密) 普通hash函数如md5.sha1.base64等都是不可逆函数.虽然我们利用php可以利用这些函数写出可逆函数来.但是跨语 ...
- NET实现RSA AES DES 字符串 加密解密以及SHA1 MD5加密
本文列举了 数据加密算法(Data Encryption Algorithm,DEA) 密码学中的高级加密标准(Advanced EncryptionStandard,AES)RSA公钥加密算法 ...
- Java加密与解密笔记(三) 非对称加密
非对称的特点是加密和解密时使用的是不同的钥匙.密钥分为公钥和私钥,用公钥加密的数据只能用私钥进行解密,反之亦然. 另外,密钥还可以用于数字签名.数字签名跟上文说的消息摘要是一个道理,通过一定方法对数据 ...
随机推荐
- 《ENVI下遥感影像自然真彩色合成方法》——TM、spot5
来源:http://blog.sina.com.cn/s/blog_764b1e9d0100tz4f.html#bsh-73-375271630
- Java类加载器加载类顺序
java ClassLoader的学习 java是一门解释执行的语言,由开发人员编写好的java源文件先编译成字节码文件.class形式,然后由java虚拟机(JVM)解释执 行,.class字节码文 ...
- 过长文字自动换行的技巧 Word-Break Word-Wrap
在很多时候,为了防止内容过长把表格或容器撑破, 我们都需要为容器加上自动换行的功能. 实现自动换行,用CSS来实现,通常有两种方式: word-break: 取值为 normal, break-all ...
- 谈谈怎么实现Oracle数据库分区表
谈谈怎么实现Oracle数据库分区表 数据库的读写分离 SQLSERVER性能监控级别步骤 Oracle索引问题诊断与优化(1)
- hdu 4657 Find Permutation
思路:用一个数组index[]存放a的下标,初始化令a[i]=c[i]=index[i]=i; 假设当前处理的i,初始时令cur=i:j为大于i的任意值.每次操作找a[l]=c[cur]-b[cur] ...
- maven3常用命令\创建Project
转自 http://blog.csdn.net/edward0830ly/article/details/8748986 ------------------------------maven3常用命 ...
- Servlet中乱码问题
页面编码方式为utf-8 当使用post传值时 request.setContentType("utf-8"); 当使用get传值时 String str = request.ge ...
- Ubuntu 12.04安装字体
http://www.2cto.com/os/201210/160645.html 安装方法,终端输入: $ sudo thunar /usr/share/fonts/truetype 待ture ...
- HeadFirst设计模式之组合模式
一. 1.The Composite Pattern allows us to build structures of objects in the form of trees that contai ...
- HeadFirst设计模式之装饰者模式
一. 1.The Decorator Pattern attaches additional responsibilities to an object dynamically.Decorators ...