3DES是继DESeasy被破解后的DES加密升级版,它属于对称加密。

可指定24位长度的密钥。在java API中也有事实上现,代码例如以下:

/**
* 3DES 的Java SDK API 实现
* @author dxd
* 201406917
*/
public class DES3 {
private static final String Algorithm = "DESede";// 定义 加密算法,可用 //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;n<b.length;n++) {
stmp=(java.lang.Integer.toHexString(b[n] & 0XFF));
if (stmp.length()==1) hs=hs+"0"+stmp;
else hs=hs+stmp;
if (n<b.length-1) hs=hs+":";
}
return hs.toUpperCase();
}
}

调用时能够:

	byte[] keydata = {
(byte) 0x00, (byte) 0x01, (byte) 0x02, (byte) 0x03, (byte) 0x04, (byte) 0x05, (byte) 0x06, (byte) 0x07,
(byte) 0x08, (byte) 0x09, (byte) 0x0a, (byte) 0x0b, (byte) 0x0c, (byte) 0x0d, (byte) 0x0e, (byte) 0x0f,
(byte) 0x10, (byte) 0x11, (byte) 0x12, (byte) 0x13, (byte) 0x14, (byte) 0x15, (byte) 0x16, (byte) 0x17, };
String src = "3DES加密算法" ;
byte[] encoded = DES3.encryptMode(keydata, src.getBytes());
System.out.println("DES3-->Encoded = " + new String(encoded));

则能够计算出原文src加密后的密文。

最新文章

  1. Atitit.数据采集器 dataspider
  2. (转载)JavaWeb学习总结(五十三)——Web应用中使用JavaMail发送邮件
  3. VirtualBox Ubuntu Server 16.04 手动设置 网络(IP, DNS, 路由)
  4. HTTP Basic Authentication
  5. 什么是JavaEE
  6. Android Hotpatch系列之-项目介绍
  7. 票据OCR前预处理 (附Demo)
  8. IIS Express启动命令
  9. js——&lt;script&gt;标签的加载顺序
  10. asp.net中Cookie的用法【转】
  11. cURL模拟POST方法提交XML数据并解析
  12. [Basics] 递归
  13. Android 修改应用图标(Android Studio)
  14. 洛谷P1966 火柴排队 贪心+离散化+逆序对(待补充QAQ
  15. linux各种系统下载地址
  16. 利用STM32CubeMX之SPI
  17. mysql bigint ,int , smallint,tinyint 的范围
  18. JAVA爬取百度贴吧图片
  19. “全栈2019”Java多线程第二十五章:生产者与消费者线程详解
  20. 利用机器学习实现微信小程序-加减大师自动答题

热门文章

  1. One-Way Streets (oneway)
  2. CCC2019游记
  3. 洛谷 [P2341] 受欢迎的牛
  4. jQuery性能优化【转】
  5. Python 类的重写
  6. os模块 文件操作
  7. C# 加载图片image --(C#)Image.FromFile 方法会锁住文件的原因及可能的解决方法
  8. 使用p6spy格式化日志输出
  9. Hbuilder 快捷键
  10. Facebook为什么使用PHP编程语言?