`
a3mao
  • 浏览: 559421 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

    博客分类:
  • Work
阅读更多
网上看到 一个这样加密的程序,也许以后能用到,故摘录下来.网址: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 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;
 }
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics