java 加密和解密

来源:互联网 发布:淘宝上宝贝描述怎么写 编辑:程序博客网 时间:2024/06/05 04:53

 自己写了个加密和解密的小程序和大家分享一下。

 

  public class TestEncrypt {

 /**
  * TODO <Method comments>
  *
  * @param args
  * @author YinPengBo ,2011-1-10下午04:35:12
  * @modified
  */
 
  //密钥生成器
    private KeyGenerator keygen;
   
      //负责保存密钥
    private SecretKey skey;
   
      //加密和解密工具
    private Cipher c;
   
     //负责保存加密结果
    private byte[] cipherByte;
   
    public TestEncrypt(){
     
     Security.addProvider(new com.sun.crypto.provider.SunJCE());
     try {
       //获得密钥生成器对象
   keygen = KeyGenerator.getInstance("DES");
    //生成密钥
   skey = keygen.generateKey();
   
    //生成cipher对象
   c = Cipher.getInstance("DES");
   
  } catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
    }
   
     /**
      *
      * construction a new instance. TODO <Sth.>
      *
      * @param encryptModel 加密方法:如,DES,AES
      */
    public TestEncrypt(String encryptModel){
       
     Security.addProvider(new com.sun.crypto.provider.SunJCE());
     try {
       //获得密钥生成器对象
   keygen = KeyGenerator.getInstance(encryptModel);
    //生成密钥
   skey = keygen.generateKey();
   
    //生成cipher对象
   c = Cipher.getInstance(encryptModel);
   
  } catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
    }
   
     /**
      * 对字符串进行加密
      * TODO <Method comments>
      *
      * @param str 要加密的字符串
      * @return
      * @author YinPengBo ,2011-1-11下午02:57:07
      * @modified
      */
   public String createEncryptor(String str){
   
    //用密钥初始化cipher,指定方式目前为加密
  
    try {
  c.init(Cipher.ENCRYPT_MODE, skey);
  //加密保存
  
  cipherByte = c.doFinal(str.getBytes());
  //用Base64的encode方法将byte转成String
  String encode= Base64.encode(cipherByte);
  return encode;
 } catch (Exception e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
  return "";
 }
   }
  
    /**
     * 解密
     * TODO <Method comments>
     *
     * @param buff,加密后的字节
     * @return
     * @author YinPengBo ,2011-1-11下午03:03:04
     * @modified
     */
   public String createDencryptor(String passStr){
    try {
     //初始化Cipher,指定目前为解密
  c.init(Cipher.DECRYPT_MODE, skey);
    //用Base64的decode方法将String转成byte      
  byte[] bytes = Base64.decode(passStr);
  cipherByte = c.doFinal(bytes);
  return new String(cipherByte); 
 } catch (Exception e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
  return "";
 }
   }
  
 

   public static void main(String[] args) {
   
    TestEncrypt te = new TestEncrypt("AES");
    String testStr = "tom123&id=尹鹏波***……&……&1324";

    System.out.println("加密前:"+testStr);
  
   String afterEncryptStr = te.createEncryptor(testStr);
   
   System.out.println("加密后:"+afterEncryptStr);

   
   
   System.out.println("解密后:"+te.createDencryptor(afterEncryptStr));