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加密与解密笔记(三) 非对称加密
非对称的特点是加密和解密时使用的是不同的钥匙.密钥分为公钥和私钥,用公钥加密的数据只能用私钥进行解密,反之亦然. 另外,密钥还可以用于数字签名.数字签名跟上文说的消息摘要是一个道理,通过一定方法对数据 ...
随机推荐
- Arcgis 10.1 求面里面所包含的点的平均值
空间链接的作用:将面上的所有点的值加起来取平均值。赋值给面属性。(我们可以定义右击——定义合并规则 连接要素的字段映射参数中指定的合并规则仅适用于连接要素中的属性,且仅适用于多个要素与目标要素匹配 ...
- Java 多线程 简单实例 (Runnable)
1.多线程实例 package second; public class A implements Runnable { public char stat = '*'; public void run ...
- PS 颜色表大全-颜色中文名(1)
颜色中文名 鸨色#f7acbc 赤白橡#deab8a 油色#817936 绀桔梗#444693 踯躅色#ef5b9c 肌色#fedcbd 伽罗色#7f7522 花色#2b4490 桜色#feeeed ...
- 微软职位内部推荐-SDE II-MODC-Beijing
微软近期Open的职位: JOB TITLE: Software Design Engineer IIDEPARTMENT: Microsoft Office Division ChinaIMMEDI ...
- jquery全局加载函数的几种方式;
1.使用javascript方式(function(){})(); 2.使用jQuery(function($) {}); 3.使用$(document).ready(function(){}); 其 ...
- 分布式日志收集系统--Chukwa
1. 安装部署 1.1 环境要求 1.使用的JDK的版本必须是1.6或者更高版本,本实例中使用的是JDK1.6 2.使用的hadoop的版本必须是Hadoop0.20.205.1及以上版本,本实例中使 ...
- jQuery 如何先创建、再修改、后添加DOM元素
例如顺序执行[创建]-> [修改]-> [添加]三个动作. 由于jQuery支持链式操作,其实就是设计模式的builder模式,所以我们可以把三个操作串在一起来执行. 首先创建一个p元素, ...
- HDU 1062 Text Reverse
题意 : 给出你一个句子,让你把句子中每个单词的字母顺序颠倒一下输出. 思路 : 用栈即可,就是注意原来在哪儿有空格就要输出空格. //hdu1062 #include <iostream> ...
- coco2d-js 多屏适配相关API
setDesignResolutionSize() //设计分辨率大小及模式 setContentScaleFactor() //内容缩放因子 setSearchPaths() //资源搜索路径 g ...
- *[topcoder]JumpFurther
http://community.topcoder.com/stat?c=problem_statement&pm=12300&rd=15699 题意:有一个无限长的阶梯,i从1到N, ...