【一个java的DES加解密类转换成C#】
2013-08-11 09:36
316 查看
一个java的des加密解密代码如下:
//package com.visionsky.util;
import java.security.*;
//import java.util.regex.Pattern;
//import java.util.Hashtable;
import javax.crypto.*;
import javax.crypto.spec.*;
import sun.misc.*;
/**
* des加密解密
*/
public class DESPlus {
private static String strDefaultKey = "PLFP"; //默认密钥
private static final byte[] iv = {0x12, 0x34, 0x56, 0x78, (byte) 0x90, (byte) 0xab, (byte) 0xcd, (byte) 0xef};//des 向量
private static BASE64Encoder enc = new BASE64Encoder();//将byte[]转换成String
private static BASE64Decoder dec = new BASE64Decoder(); //将String转换成byte[]
/**
* 加密字节数组
*
* @param arrB
* 需加密的字节数组
* @param key
* 密钥
* @return 加密后的字节数组
* @throws Exception
*/
public static byte[] encrypt(byte[] arrB, String key) throws Exception {
DESKeySpec desKeySpec = new DESKeySpec(key.getBytes());
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
SecretKey secretKey = keyFactory.generateSecret(desKeySpec);
IvParameterSpec ivp = new IvParameterSpec(DESPlus.iv);
Cipher encryptCipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
encryptCipher.init(Cipher.ENCRYPT_MODE, secretKey, ivp);
return encryptCipher.doFinal(arrB);
}
/**
* 加密字符串
*
* @param xml
* 需加密的字符串
* @param key
* 密钥
* @return 加密后的字符串
* @throws Exception
*/
public static String encrypt(String xml, String key) throws Exception {
//return DESPlus.enc.encode(encrypt(xml.getBytes(), key));
return new String(encrypt(xml.getBytes(), key));
}
/**
* 使用默认公钥加密字符串
* @param xml 需加密的字符串
* @return 加密后的字符串
* @throws Exception
*/
public static String encrypt(String xml) throws Exception {
return encrypt(xml, strDefaultKey);
}
/**
* 解密字节数组
*
* @param arrB
* 需解密的字节数组
* @param key
* 密钥
* @return 解密后的字节数组
* @throws Exception
*/
public static byte[] decrypt(byte[] arrB, String key) throws Exception {
DESKeySpec desKeySpec = new DESKeySpec(key.getBytes());
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
SecretKey secretKey = keyFactory.generateSecret(desKeySpec);
IvParameterSpec ivp = new IvParameterSpec(DESPlus.iv);
Cipher decryptCipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
decryptCipher.init(Cipher.DECRYPT_MODE, secretKey, ivp);
return decryptCipher.doFinal(arrB);
}
/**
* 解密字符串
*
* @param xml
* 需解密的字符串
* @param key
* 密钥
* @return 解密后的字符串
* @throws Exception
*/
public static String decrypt(String xml, String key) throws Exception {
return new String(decrypt(DESPlus.dec.decodeBuffer(xml), key));
}
/**
* 使用默认公钥解密字符串
* @param xml 需解密的字符串
* @return 解密后的字符串
* @throws Exception
*/
public static String decrypt(String xml) throws Exception {
return decrypt(xml, strDefaultKey);
}
/**
* 从指定字符串生成密钥,密钥所需的字节数组长度为8位 不足8位时后面补0,超出8位只取前8位
*
* @param arrBTmp
* 构成该字符串的字节数组
* @return 生成的密钥
* @throws java.lang.Exception
*/
private Key getKey(byte[] arrBTmp) throws Exception {
// 创建一个空的8位字节数组(默认值为0)
byte[] arrB = new byte[8];
// 将原始字节数组转换为8位
for (int i = 0; i < arrBTmp.length && i < arrB.length; i++) {
arrB[i] = arrBTmp[i];
}
更多精彩教程请关注:win7旗舰版下载
//package com.visionsky.util;
import java.security.*;
//import java.util.regex.Pattern;
//import java.util.Hashtable;
import javax.crypto.*;
import javax.crypto.spec.*;
import sun.misc.*;
/**
* des加密解密
*/
public class DESPlus {
private static String strDefaultKey = "PLFP"; //默认密钥
private static final byte[] iv = {0x12, 0x34, 0x56, 0x78, (byte) 0x90, (byte) 0xab, (byte) 0xcd, (byte) 0xef};//des 向量
private static BASE64Encoder enc = new BASE64Encoder();//将byte[]转换成String
private static BASE64Decoder dec = new BASE64Decoder(); //将String转换成byte[]
/**
* 加密字节数组
*
* @param arrB
* 需加密的字节数组
* @param key
* 密钥
* @return 加密后的字节数组
* @throws Exception
*/
public static byte[] encrypt(byte[] arrB, String key) throws Exception {
DESKeySpec desKeySpec = new DESKeySpec(key.getBytes());
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
SecretKey secretKey = keyFactory.generateSecret(desKeySpec);
IvParameterSpec ivp = new IvParameterSpec(DESPlus.iv);
Cipher encryptCipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
encryptCipher.init(Cipher.ENCRYPT_MODE, secretKey, ivp);
return encryptCipher.doFinal(arrB);
}
/**
* 加密字符串
*
* @param xml
* 需加密的字符串
* @param key
* 密钥
* @return 加密后的字符串
* @throws Exception
*/
public static String encrypt(String xml, String key) throws Exception {
//return DESPlus.enc.encode(encrypt(xml.getBytes(), key));
return new String(encrypt(xml.getBytes(), key));
}
/**
* 使用默认公钥加密字符串
* @param xml 需加密的字符串
* @return 加密后的字符串
* @throws Exception
*/
public static String encrypt(String xml) throws Exception {
return encrypt(xml, strDefaultKey);
}
/**
* 解密字节数组
*
* @param arrB
* 需解密的字节数组
* @param key
* 密钥
* @return 解密后的字节数组
* @throws Exception
*/
public static byte[] decrypt(byte[] arrB, String key) throws Exception {
DESKeySpec desKeySpec = new DESKeySpec(key.getBytes());
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
SecretKey secretKey = keyFactory.generateSecret(desKeySpec);
IvParameterSpec ivp = new IvParameterSpec(DESPlus.iv);
Cipher decryptCipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
decryptCipher.init(Cipher.DECRYPT_MODE, secretKey, ivp);
return decryptCipher.doFinal(arrB);
}
/**
* 解密字符串
*
* @param xml
* 需解密的字符串
* @param key
* 密钥
* @return 解密后的字符串
* @throws Exception
*/
public static String decrypt(String xml, String key) throws Exception {
return new String(decrypt(DESPlus.dec.decodeBuffer(xml), key));
}
/**
* 使用默认公钥解密字符串
* @param xml 需解密的字符串
* @return 解密后的字符串
* @throws Exception
*/
public static String decrypt(String xml) throws Exception {
return decrypt(xml, strDefaultKey);
}
/**
* 从指定字符串生成密钥,密钥所需的字节数组长度为8位 不足8位时后面补0,超出8位只取前8位
*
* @param arrBTmp
* 构成该字符串的字节数组
* @return 生成的密钥
* @throws java.lang.Exception
*/
private Key getKey(byte[] arrBTmp) throws Exception {
// 创建一个空的8位字节数组(默认值为0)
byte[] arrB = new byte[8];
// 将原始字节数组转换为8位
for (int i = 0; i < arrBTmp.length && i < arrB.length; i++) {
arrB[i] = arrBTmp[i];
}
更多精彩教程请关注:win7旗舰版下载
相关文章推荐
- 一个java的DES加解密类转换成C#
- 一个java的DES加解密类转换成C#
- 一个java的DES加解密类转换成C#
- 【一个java的DES加解密类转换成C#】
- 一个java的DES加密解密类转换成C#
- java代码转换为c# 工具
- C#源代码—在windows窗体中添加一个名为lblShow的Lable控件4,创建可变字符串,字符串转换为字符型
- 关于C#和JAVA之间高低位转换的问题
- [c# JAVA]类型转换集锦
- 一个将阿拉伯数字转换成中文大写的好算法【原创】(C#)
- C#用DES加密JAVA用DES解密,JAVA用DES加密C#用DES解密的实现
- C#封装加密算法(MD5、SHA、HMAC、DES、RSA)的一个类
- DEMO[C#]TypeChange 关于类型转换的一个DEMO
- 把Java项目的代码转换为C#代码
- 一个使用jackson转换java对象的例子
- 一个数字转中文大写货币数字的类.完美兼容于C#所有值类型转换和操作,beta版.希望大家多多纠正.
- java和c#语言上的一个不同之处
- java 反射的应用(将一个java对象转换成一个xml文件)
- Bean-Query 一个把对象转换为Map的Java工具库
- 在Java中如何将一个数组Array转换为ArrayList