a3mao 发表于 2013-2-4 21:53:42

DES/3DES加密算法源代码-转载

网上看到 一个这样加密的程序,也许以后能用到,故摘录下来.网址:http://www.1cn.biz/index.php?q=node/89

使用方法:
encryptedTextXXXDES.getInstance().encrypt("your plain text");
plainText=XXXDES.getInstance().decrypt("your encrypted text");
代码:
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 keySecurity.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;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; }}
页: [1]
查看完整版本: DES/3DES加密算法源代码-转载