【一个java的DES加解密类转换成C#】
来源:互联网 发布:js加载乱码 编辑:程序博客网 时间:2024/05/16 07:57
//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加解密的一个类
- php 的 3des加解密类,兼容C#/java
- Objective C与Java之间的DES加解密实现
- C#DES加解密
- C++DES加解密
- C#-DES加解密
- Android(java)与C#,DES加解密
- DES加解密(Java)
- Java Des加解密
- java des加解密
- java des 加解密
- java DES加解密
- DES加解密(Java)
- C#DES文件加解密工具类
- DES加解密+C实现
- Mybatis API 使用指南
- 【ACMclub周赛5】Problem C——求两圆的交叉面积
- 深度学习大牛andrew.Ng DeepLearning
- sqlplus login.sql 查找和设置
- HDU4611+
- 【一个java的DES加解密类转换成C#】
- STL用法 (set)
- seo中的剩者为王
- Cow Sorting
- 知道这些,seo操作精华也就懂了
- uva 197 Cube(空间几何+回溯)
- 在sql*plus中显示语句执行所用的时间
- PowerMock注解PowerMockIgnore的使用方法
- 站长如何利用百度贴吧做好网络营销