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加密与解密笔记(三) 非对称加密
非对称的特点是加密和解密时使用的是不同的钥匙.密钥分为公钥和私钥,用公钥加密的数据只能用私钥进行解密,反之亦然. 另外,密钥还可以用于数字签名.数字签名跟上文说的消息摘要是一个道理,通过一定方法对数据 ...
随机推荐
- Oracle的Export用法
Oracle 的 Export 命令用于导出数据库信息,既可以导出表结构,也可以导出数据,表空间,或者按用户导出等等.按照通常的说法,该命令主要是用于数据库的迁移或者备份的.下面就介绍一下该命令的部分 ...
- PowerDesigner 非数值默认值时会自动增加单引单
在PowerDesigner中,如果默认值是非数值型的,那么 PowerDesigner 会默认加上单引号 因此我们需要把这个默认的单引号干掉,如果是需要设置字符串默认值的时候,就手工加上 单引号 即 ...
- C# 构造函数中调用虚方法的问题
请看下面代码: using System; public class A{ public A(){ M1(); } public virtual void M1(){} } public class ...
- 论文阅读(2014-1)----a new collaborative filtering-based recommender system for manufacturing appstore: which applications would be useful to your busines?
这篇论文讲的东西并不深,讲的是appstore上的app个性化推荐问题,简单做个笔记. 简单介绍: 推荐系统可以降低没有卖任何app就离开的用户的概率.当用户买了某个app后,可以推荐配套的app.增 ...
- Hibernate简介2
一.主配置 ◆查询缓存,同下面讲的缓存不太一样,它是针对HQL语句的缓存,即完全一样的语句再次执行时可以利用缓存数据.但是,查询缓存在一个交易系统(数据变更频繁,查询条件相同的机率并不大)中可能会起反 ...
- spark storage之SparkEnv
此文旨在对spark storage模块进行分析,整理自己所看所得,等以后再整理. ok,首先看看SparkContext中sparkEnv相关代码: private[spark] def creat ...
- [itint5]摆放窗口
http://www.itint5.com/oj/#47 一种做法是:把矩形所占的方格都设为-1,就是个最大子矩阵和问题.复杂度o(w^2*h)或o(w*h^2),空间W*H猜想应用场景是:电脑屏幕上 ...
- [mock]12月27日
一开始介绍项目,最后的反馈是,还是说得不清楚,需要再准备准备. 然后两道题,第一题是有个数组,有2*n个数字,从1~n.比如n=3的数组,{1,2,2,3,1,3}.然后两两相同的数字删除,每次删除得 ...
- 意外发现,VC断点可加在构造函数的左括号上
CTestApp::CTestApp() { // 断点加在这里,然后可单步进入CTestApp的父类CWinApp的构造函数进行调试! ; } 并且在CWinApp的构造函数的左括号上,可进一步进入 ...
- Android Spannable
ApiDemo 源码至 com.example.android.apis.text.Link 类. 首先,看一下其运行效果: 要给 TextView 加上效果,方式主要有几种: 第一种,自动应用效果, ...