📄 newtest.java
字号:
package com.des.test;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESedeKeySpec;
import javax.crypto.spec.SecretKeySpec;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
import javax.crypto.KeyGenerator;
public class NewTEST
{
public static void main(String[] args)
{
String key_String = "3343k";
String src_String = "5555555555";
String des_String = "";
String new_Src = null;
try
{
des_String = desEncrypt(key_String, src_String);
} catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(des_String);
try
{
new_Src = desDecrypt(key_String, des_String);
System.out.println("new_Src::" + new_Src);
} catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(new_Src);
try
{
String dd = desDecrypt(key_String, des_String);
System.out.println("ddddddddd " + dd + " dddddddddddd");
} catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// 进行3DES加密
public static String desEncrypt(String key_string, String src_string)
throws Exception
{
// 生成DES密钥
SecretKey deskey;
// 加密后的密文
String des_String;
// 判断密钥的长度,如果不是24位,则以"0"补齐
String zeros = " ";
if (key_string != null)
{
int keylength = key_string.length();
if (keylength < 24)
{
key_string += zeros.substring(keylength);
}
} else
{
return null;
}
byte key_byte[] = key_string.getBytes(); //
// 3DES 24
System.out.println("key_string::::::::::" + key_string);
deskey = getDESKey(key_byte);
Cipher cipher = Cipher.getInstance("DESede", "SunJCE");
cipher.init(Cipher.ENCRYPT_MODE, deskey);
byte srt_byte[] = src_string.getBytes();
// des_String = new String(cipher.doFinal(srt_byte));
// BASE64转码
byte[] by = cipher.doFinal();
StringBuffer sb = new StringBuffer();
for (int i = 0; i < by.length; i++)
{
sb.append(by[i]);
}
System.out.println("sb.toString():::::::" + sb.toString());
System.out.println("by:::::::" + new String(by, "GBK"));
System.out.println("srt_byte::::::::" + cipher.doFinal(srt_byte));
des_String = base64Encode(cipher.doFinal(srt_byte));
return des_String;
}
// 进行3DES解密
public static String desDecrypt(String key_string, String des_string)
throws Exception
{
// 生成DES密钥
SecretKey deskey;
// 未解密的明文
String desede_String;
// 解密后的明文
String src_String;
// 判断密钥的长度,如果不是24位,则以"0"补齐
String zeros = " ";
if (key_string != null)
{
int keylength = key_string.getBytes().length;
System.out.println("keylength:" + keylength);
if (keylength < 24)
{
key_string += zeros.substring(keylength);
}
} else
{
return null;
}
BASE64Encoder base64Encoder = new BASE64Encoder();
// String base_keyStrng=base64Encoder.encode(key_string.getBytes());
// System.out.println("base_keyStrng:"+base_keyStrng);
byte key_byte[] = key_string.getBytes(); //
// 3DES 24
System.out.println("key_byte:" + key_byte.length);
deskey = getDESKey(key_byte);
Cipher cipher = Cipher.getInstance("DESede", "SunJCE");
cipher.init(Cipher.DECRYPT_MODE, deskey);
BASE64Decoder base64Decoder = new BASE64Decoder();
base64Decoder.decodeBuffer(des_string);
byte srt_byte[] = base64Decode(des_string);
// BASE64转码
// src_String = new String(cipher.doFinal(base64Decoder
// .decodeBuffer(des_string)));
src_String = new String(cipher.doFinal(srt_byte));
return src_String;
}
/**
* 生成3DES密钥.
*
* @param key_byte
* seed key
* @throws Exception
* @return javax.crypto.SecretKey Generated DES key
*/
public static SecretKey getDESKey(byte[] key_byte) throws Exception
{
SecretKey k = null;
k = new SecretKeySpec(key_byte, "DESede");
DESedeKeySpec keySpec = new DESedeKeySpec(key_byte);
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DESede");
SecretKey key = keyFactory.generateSecret(keySpec);
return key;
}
/*
* 对普通字符串进行BASE64转码 srcString :普通字符串
*/
public static String base64Encode(byte[] srcString)// 加base64
{
BASE64Encoder base64Encoder = new BASE64Encoder();
try
{
// 经过BASE64加密后的密文
String base64String = base64Encoder.encode(srcString);
return base64String;
} catch (Exception e)
{
e.printStackTrace();
return null;
}
}
/*
* 将BASE64字符串解码 base64String:BASE64字符串
*/
public static byte[] base64Decode(String base64String)// 解base64
{
BASE64Decoder base64Decoder = new BASE64Decoder();
try
{
// 将BASE64转码过的字符串进行解码,获取明文
byte[] src_byte = base64Decoder.decodeBuffer(base64String);
return src_byte;
} catch (Exception e)
{
e.printStackTrace();
return null;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -