[J2SE]Java中3DES加密解密调用示例

缠丝蛋60

缠丝蛋60

2016-02-19 11:10

今天图老师小编要跟大家分享[J2SE]Java中3DES加密解密调用示例,精心挑选的过程简单易学,喜欢的朋友一起来学习吧!
jce.jar
security/US_export_policy.jar
security/local_policy.jar
ext/sunjce_provider.jar
Java运行时会自动加载这些包,因此对于带main函数的应用程序不需要设置到CLASSPATH环境变量中。对于WEB应用,不需要把这些包加到WEB-INF/lib目录下。
以下是java中调用sun公司提供的3DES加密解密算法的样本代码:
代码如下:

/*字符串 DESede(3DES) 加密*/
import java.security.*;
import javax.crypto.*;
import javax.crypto.spec.SecretKeySpec;
public class ThreeDes {
private static final String Algorithm = "DESede"; //定义 加密算法,可用 DES,DESede,Blowfish

//keybyte为加密密钥,长度为24字节
//src为被加密的数据缓冲区(源)
public static byte[] encryptMode(byte[] keybyte, byte[] src) {
try {
//生成密钥
SecretKey deskey = new SecretKeySpec(keybyte, Algorithm);
//加密
Cipher c1 = Cipher.getInstance(Algorithm);
c1.init(Cipher.ENCRYPT_MODE, deskey);
return c1.doFinal(src);
}
catch (java.security.NoSuchAlgorithmException e1) {
e1.printStackTrace();
}
catch (javax.crypto.NoSuchPaddingException e2) {
e2.printStackTrace();
}
catch (java.lang.Exception e3) {
e3.printStackTrace();
}
return null;
}

//keybyte为加密密钥,长度为24字节
//src为加密后的缓冲区
public static byte[] decryptMode(byte[] keybyte, byte[] src) {
try {
//生成密钥
SecretKey deskey = new SecretKeySpec(keybyte, Algorithm);
//解密
Cipher c1 = Cipher.getInstance(Algorithm);
c1.init(Cipher.DECRYPT_MODE, deskey);
return c1.doFinal(src);
}
catch (java.security.NoSuchAlgorithmException e1) {
e1.printStackTrace();
}
catch (javax.crypto.NoSuchPaddingException e2) {
e2.printStackTrace();
}
catch (java.lang.Exception e3) {
e3.printStackTrace();
}
return null;
}

//转换成十六进制字符串
public static String byte2hex(byte[] b) {
String hs="";
String stmp="";
for (int n=0;nb.length;n++) {
stmp=(java.lang.Integer.toHexString(b[n] & 0XFF));
if (stmp.length()==1) hs=hs+"0"+stmp;
else hs=hs+stmp;
if (nb.length-1) hs=hs+":";
}
return hs.toUpperCase();
}
public static void main(String[] args){

//添加新安全算法,如果用JCE就要把它添加进去
Security.addProvider(new com.sun.crypto.provider.SunJCE());
final byte[] keyBytes = {0x11, 0x22, 0x4F, 0x58,
(byte)0x88, 0x10, 0x40, 0x38, 0x28, 0x25, 0x79, 0x51,
(byte)0xCB, (byte)0xDD, 0x55, 0x66, 0x77, 0x29, 0x74,
(byte)0x98, 0x30, 0x40, 0x36, (byte)0xE2
}; //24字节的密钥

String szSrc = "This is a 3DES test. 测试";
System.out.println("加密前的字符串:" + szSrc);

byte[] encoded = encryptMode(keyBytes, szSrc.getBytes());
System.out.println("加密后的字符串:" + new String(encoded));

byte[] srcBytes = decryptMode(keyBytes, encoded);
System.out.println("解密后的字符串:" + (new String(srcBytes)));
}
}
展开更多 50%)
分享

猜你喜欢

[J2SE]Java中3DES加密解密调用示例

Web开发
[J2SE]Java中3DES加密解密调用示例

如何掌握Java(J2SE篇)

编程语言 网络编程
如何掌握Java(J2SE篇)

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

J2SE 1.4 中assertion 功能介绍

编程语言 网络编程
J2SE 1.4 中assertion 功能介绍

J2SE中的序列化之继承

Java JAVA基础
J2SE中的序列化之继承

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

J2SE中的序列化的认识

Java JAVA基础
J2SE中的序列化的认识

J2SE中的序默认序列化

Java JAVA基础
J2SE中的序默认序列化

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

如何远程调用ACCESS数据库[要求加精!!]

如何远程调用ACCESS数据库[要求加精!!]

java中的值传递和引用传递的区别分析

java中的值传递和引用传递的区别分析
下拉加载更多内容 ↓