smatrix | | * * Project xxxx * Package com.xxxx.utils * */ 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); } 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 = (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"); | |