📄 encrypttool.java
字号:
package com.des.test;
import java.io.*;
import java.security.*;
import javax.crypto.*;
import javax.crypto.spec.SecretKeySpec;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
/**
*
*
* CryptTool 封装了一些加密工具方法, 包括 3DES, MD5 等.
*
*
* @author BeanSoft
* @version 1.0 2004-05-12
*/
public class EncryptTool {
public EncryptTool() {
}
/**
* 生成3DES密钥.
*
* @param key_byte
* seed key
* @throws Exception
* @return javax.crypto.SecretKey Generated DES key
*/
public static javax.crypto.SecretKey genDESKey(byte[] key_byte)
throws Exception {
SecretKey k = null;
k = new SecretKeySpec(key_byte, "DESede");
return k;
}
/**
* 3DES 解密(byte[]).
*
* @param key
* SecretKey
* @param crypt
* byte[]
* @throws Exception
* @return byte[]
*/
public static byte[] desDecrypt(javax.crypto.SecretKey key, byte[] crypt)
throws Exception {
javax.crypto.Cipher cipher = javax.crypto.Cipher.getInstance("DESede",
"SunJCE");
cipher.init(javax.crypto.Cipher.DECRYPT_MODE, key);
return cipher.doFinal(crypt);
}
/**
* 3DES 解密(String).
*
* @param key
* SecretKey
* @param crypt
* byte[]
* @throws Exception
* @return byte[]
*/
public static String desDecrypt(javax.crypto.SecretKey key, String crypt)
throws Exception {
return new String(desDecrypt(key, crypt.getBytes()));
}
/**
* 3DES加密(byte[]).
*
* @param key
* SecretKey
* @param src
* byte[]
* @throws Exception
* @return byte[]
*/
public static byte[] desEncrypt(javax.crypto.SecretKey key, byte[] src)
throws Exception {
javax.crypto.Cipher cipher = javax.crypto.Cipher.getInstance("DESede",
"SunJCE");
cipher.init(javax.crypto.Cipher.ENCRYPT_MODE, key);
return cipher.doFinal(src);
}
/**
* 3DES加密(String).
*
* @param key
* SecretKey
* @param src
* byte[]
* @throws Exception
* @return byte[]
*/
public static String desEncrypt(javax.crypto.SecretKey key, String src)
throws Exception {
return new String(desEncrypt(key, src.getBytes()));
}
/** Test crypt */
public static void main(String[] args) {
// Security.addProvider(new com.sun.crypto.provider.SunJCE());
// 明文
String src_string = "1362223434";
byte src_byte[] = src_string.getBytes();
System.out.println("明文:" + src_string);
System.out.println("明文长度:" + src_byte.length);
// 密钥
String key_string = "333456781234567812345678";
// Lc2F4Wi130TSr/J2WAH8zw==
// nxkysZBvCVTzpNSFvrrP0w==
// lOOHriXpubu/Av6vBXpyHg==
byte key_byte[] = key_string.getBytes(); // 3DES 24
// bytes key
System.out.println("密钥内容:" + key_string);
System.out.println("密钥长度:" + key_byte.length);
Provider[] pd = Security.getProviders();
for (int i = 1; i <= (pd.length); i++) {
System.out.println("Provider[" + i + "]=" + pd[i - 1].getName());
}
try {
// 生成DES密钥
javax.crypto.SecretKey deskey;
// 生成DES密钥
deskey = genDESKey(key_byte);
System.out.println("生成后的密钥:Generator DES KEY OK: " + deskey);
// DES加解密
byte[] encrypt, decrypt;
// 加密
encrypt = desEncrypt(deskey, src_byte);
// 加密后的密文
String enc_string = new String(encrypt);
System.out.println(enc_string.getBytes().length + " 加密后的密文:"
+ enc_string);
// BASE64Encoder通过这个类对密码进行BASE64转码,保证传输的正确性.
BASE64Encoder enc = new BASE64Encoder();
// 经过BASE64转码后的密文
String base_string;
// base_string = new String(Base64.encode(encrypt));
// 对密文进行BASE64转码.
base_string = enc.encode(encrypt);
String cipherString = enc.encode(encrypt);
BASE64Decoder dec = new BASE64Decoder();
String ciphertext = new String(dec.decodeBuffer(base_string));
System.out.println("BASE64 转码后的密文 length:" + base_string.length()
+ " " + base_string);
System.out.println("BASE64 转码后的密文 length:" + base_string.length()
+ " " + cipherString);
/** **************************解密****************************************** */
// 将BASE64转码后的密文进行解码.解码后应该与加密后的密文一致.
String base_decode = new String(dec.decodeBuffer(base_string));
byte[] bb = encrypt;
byte[] base = dec.decodeBuffer(base_string);
for (int i = 0; i < bb.length; i++) {
System.out.println(encrypt[i] + ":" + base[i]);
}
decrypt = desDecrypt(deskey, base_decode.getBytes());
System.out.println("解密后的明文decrypt=" + new String(decrypt));
} catch (Exception ex) {
ex.printStackTrace();
}
}
/*
* 对普通字符串进行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 String base64Decode(String base64String)// 解base64
{
BASE64Decoder base64Decoder = new BASE64Decoder();
try {
// 将BASE64转码过的字符串进行解码,获取明文
String srcString = new String(base64Decoder
.decodeBuffer(base64String));
return srcString;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -