📄 3des.txt
字号:
package com.xxxxx.utils;
import java.io.FileInputStream;
import java.io.ObjectInputStream;
import java.security.NoSuchAlgorithmException;
import java.security.Security;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.SecretKey;
public class DES {
private String Algorithm = "DESede"; //"DESede" for Triple DES
private KeyGenerator keygen;
private SecretKey deskey;
private Cipher c;
private byte[] cipherByte;
public DES() {
init();
}
public DES(String filename) {
init(filename);
}
public SecretKey genKey() {
try {
keygen = KeyGenerator.getInstance(Algorithm);
deskey = keygen.generateKey(); //利用JavaBean的持久化将key保存为文件XXX.key
} catch (NoSuchAlgorithmException ex) {
ex.printStackTrace();
} catch (Exception ex) {
ex.printStackTrace();
}
return deskey;
}
/**
*
* @param filename
*/
public void init(String filename) {
// restore key
Security.addProvider(new com.sun.crypto.provider.SunJCE());
try {
FileInputStream fis = new FileInputStream(filename);
fis = new FileInputStream(filename);
ObjectInputStream ois = new ObjectInputStream(fis);
deskey = (SecretKey) ois.readObject();
ois.close();
fis.close();
c = Cipher.getInstance(Algorithm);
} catch (NoSuchAlgorithmException ex) {
ex.printStackTrace();
} catch (NoSuchPaddingException ex) {
ex.printStackTrace();
} catch (Exception ex) {
ex.printStackTrace();
}
}
public void init() {
Security.addProvider(new com.sun.crypto.provider.SunJCE());
try {
keygen = KeyGenerator.getInstance(Algorithm);
deskey = keygen.generateKey();
c = Cipher.getInstance(Algorithm);
} catch (NoSuchAlgorithmException ex) {
ex.printStackTrace();
} catch (NoSuchPaddingException ex) {
ex.printStackTrace();
}
}
public byte[] encryptor(String str) {
try {
c.init(Cipher.ENCRYPT_MODE, deskey);
cipherByte = c.doFinal(str.getBytes());
} catch (java.security.InvalidKeyException ex) {
ex.printStackTrace();
} catch (javax.crypto.BadPaddingException ex) {
ex.printStackTrace();
} catch (javax.crypto.IllegalBlockSizeException ex) {
ex.printStackTrace();
} catch (Exception ex) {
ex.printStackTrace();
}
return cipherByte;
}
public String decryptor(byte[] buff) {
try {
c.init(Cipher.DECRYPT_MODE, deskey);
cipherByte = c.doFinal(buff);
} catch (java.security.InvalidKeyException ex) {
ex.printStackTrace();
} catch (javax.crypto.BadPaddingException ex) {
ex.printStackTrace();
} catch (javax.crypto.IllegalBlockSizeException ex) {
ex.printStackTrace();
} catch (Exception ex) {
ex.printStackTrace();
}
return (new String(cipherByte));
}
}
/*
* Project xxxx
* Package com.xxxx.utils
* Created on 2003-11-24
* Author Derys
*
*/
package com.xxxx.utils;
/**
*
*
*/
public class XXXDES {
private static XXXDES instance = new XXXDES();
public XXXDES() {
}
/**
*
* @param str
* @return
*/
public String encrypt(String str) {
StringBuffer buffer = new StringBuffer();
DES des = new DES("XXX.key");
byte[] en = des.encryptor(str);
for (int i = 0; i < en.length; i++) {
buffer.append((char) en[i]);
}
return buffer.toString();
}
/**
*
* @param str
* @return
*/
public String decrypt(String str) {
DES des = new DES("XXX.key");
byte[] en = new byte[str.length()];
for (int i = 0; i < str.length(); i++) {
en[i] = (byte) str.charAt(i);
}
String de = des.decryptor(en);
return de;
}
/**
*
* @param str
* @return
*/
public String replaceChar(String str) {
StringBuffer buffer = new StringBuffer();
int index = str.indexOf("'");
if (index == -1) {
return str;
}
while (index > -1) {
buffer.append(str.substring(0, index));
buffer.append("''");
str = str.substring(index + 1);
index = str.indexOf("'");
}
buffer.append(str);
return buffer.toString();
}
/**
*
* @return
*/
public static XXXDES getInstance(){
if(instance == null){
instance = new XXXDES();
}
return instance;
}
}
使用:
encryptedTextXXXDES.getInstance().encrypt("your plain text");
plainText=XXXDES.getInstance().decrypt("your encrypted text");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -