Java进行3DES加密解密详解编程语言
2023-06-13 09:20:29 时间
* @author SHANHY([email protected])
* @date 2015-8-18
public class ThreeDES {
private static final String Algorithm = "DESede"; // 定义 加密算法,可用
// DES,DESede,Blowfish
/**
* 加密方法
* @param keybyte
* 加密密钥,长度为24字节
* @param src
* 被加密的数据缓冲区(源)
* @return
* @author SHANHY
* @date 2015-8-18
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;
/**
* 解密
* @param keybyte
* 加密密钥,长度为24字节
* @param src
* 加密后的缓冲区
* @return
* @author SHANHY
* @date 2015-8-18
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;
/**
* 转换成十六进制字符串
* @param b
* @return
* @author SHANHY
* @date 2015-8-18
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();
/**
* 测试
* @param args
* @author SHANHY
* @date 2015-8-18
public static void main(String[] args) {
// 添加新安全算法,如果用JCE就要把它添加进去
Security.addProvider(new com.sun.crypto.provider.SunJCE());
// 24字节的密钥(我们可以取apk签名的指纹的前12个byte和后12个byte拼接在一起为我们的密钥)
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 };
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)));
}
10496.html
cgojava相关文章
- java vo 什么意思_在Java中VO , PO , BO , QO, DAO ,POJO是什么意思
- java 四舍五入运算_JAVA正确的四舍五入方法「建议收藏」
- java标识符与关键字_4、Java标识符和关键字
- java语言的平台无关性是指什么,《深入Java虚拟机》学习笔记二:平台无关性
- java官方编译器_JAVA 编译器
- java 反射getmethod_Java 反射机制中 getMethod()和getDeclaredField()区别
- native2ascii java_Native2Ascii和Ascii2Native的Java实现
- java 测试程序代码运行时间过长_Java测试
- java h2 数据库_Java H2数据库
- java jasypt_java – 使用jasypt加密解密「建议收藏」
- java 异或加密_Java异或技操作给任意的文件加密原理及使用详解
- vscode配置java环境变量_配置Java
- php代码混淆加密算法_java代码混淆加密
- java查找字符的方法_Java字符串查找(3种方法)
- 【Android 安全】DEX 加密 ( Java 工具开发 | 加密解密算法 API | 编译代理 Application 依赖库 | 解压依赖库 aar 文件 )
- JAVA的对称加密算法AES——加密和解密详解编程语言
- Java DES 加密/解密详解编程语言
- Java DES加密解密工具类详解编程语言
- 使用java自带的base64实现加密、解密详解编程语言
- java如何采用MD5加密和解密详解编程语言
- 实现Java程序操作MySQL数据库(java调用mysql)
- 使用Java连接Linux服务器的简单方法(java连接linux)
- 如何在Linux中停止运行Java程序(linux停止java)
- Java与MySQL的无缝衔接:实现高效数据操作(java中使用mysql)
- Java数据库之MySQL学习使用教程(mysql中java教程)
- 学习Java编程,攻克Oracle难题(java学oracle)
- java加密解密示例分享
- java使用异或实现变量互换和异或加密解密示例
- Java基础之java处理ip的工具类