📄 threedes.java
字号:
/*
*北京联通全网有关网上订购和点播接口URL加密算法
*
*采用3DES加密, ECB模式/使用PKCS7方式填充不足位,
*目前给的密钥是192位(24个字节)经过BASE64编码后的可见字符串
*
*作者:xuchean@gmail.com
*/
import java.net.*;
import sun.misc.*;
import java.security.*;
import javax.crypto.*;
import javax.crypto.spec.*;
/*
* 配置: 从http://www.bouncycastle.org/latest_releases.html上下载对应JDK的“Provider”,
* 如JDK1.6对应bcprov-jdk16-137.jar, 放入CLASSPATH即可.
*/
public class ThreeDes {
private static final Cipher cipher = initCipher();
private static final BASE64Encoder base64 = new BASE64Encoder();
private static final Cipher initCipher() {
try {
// 添加新安全算法:PKCS7
Security
.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
String algorithm = "DESede/ECB/PKCS7Padding";
SecretKey desKey = new SecretKeySpec((new BASE64Decoder())
.decodeBuffer("27jrWz2sxrVbR+pnyg6jWHhgNk4sZo46"),
algorithm);
Cipher tcipher = Cipher.getInstance(algorithm);
tcipher.init(Cipher.ENCRYPT_MODE, desKey);
return tcipher;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static String encrypt(String src, String charset) {
try {
return URLEncoder.encode(encrypt(src), charset);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static String encrypt(String src) {
return base64.encode(encrypt(src.getBytes()));
}
public static byte[] encrypt(byte[] src) {
try {
return cipher.doFinal(src);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static void main(String[] args) {
System.out
.println(encrypt("3033$13311083060$D10$2004-02-24 16:19:27")
.equals(
"KoewfwcFjuBwlzVOh5UOU3FU/8weXQd9B1RoLeVS3UCp9aVfQuivfSTrJofn/7d9"));
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -