java 加密解密

/ * *
   * @ ( # ) Eryptogram.java 1.00 04 / 03 / 11
   *
   * Copyright ( c ) 2003 - 2004 Abacus , Ltd.
   *
   * 加密解密类
   *
   *
   *
   * /
   package  com.abacus.common ;
   import  java.security. *;
   import  javax.crypto. *;
   / * *
   * 加密解密类
   * @ author WangHu
   * @ version 1.00 2004年03月18日
   * /
   public  class  Eryptogram 
   {
        private  static  String  Algorithm ="DES";
       //定义 加密算法,可用 DES,DESede,Blowfish
       static  boolean  debug  = false ;
       /**
       * 构造子注解.
       */
       public  Eryptogram ()
      {
          
  
    } /**
       * 生成密钥
       * @return byte[] 返回生成的密钥
       * @throws exception 扔出异常.
       */
       public  static  byte [] getSecretKey () throws  Exception 
      {
           KeyGenerator  keygen  = KeyGenerator.getInstance (Algorithm );
           SecretKey  deskey  = keygen.generateKey ();
           if  (debug ) System.out.println ("生成密钥:"+byte2hex (deskey.getEncoded ()));
           return  deskey.getEncoded ();
          
  
    } /**
       * 将指定的数据根据提供的密钥进行加密
       * @param input 需要加密的数据
       * @param key 密钥
       * @return byte[] 加密后的数据
       * @throws Exception
       */
       public  static  byte [] encryptData (byte [] input ,byte [] key ) throws  Exception 
      {
           SecretKey  deskey  = new  javax.crypto.spec.SecretKeySpec (key ,Algorithm );
           if  (debug )
          {
               System.out.println ("加密前的二进串:"+byte2hex (input ));
               System.out.println ("加密前的字符串:"+new  String (input ));
              
  
        } Cipher  c1  = Cipher.getInstance (Algorithm );
           c1.init (Cipher.ENCRYPT_MODE ,deskey );
           byte [] cipherByte =c1.doFinal (input );
           if  (debug ) System.out.println ("加密后的二进串:"+byte2hex (cipherByte ));
           return  cipherByte ;
          
  
    } /**
       * 将给定的已加密的数据通过指定的密钥进行解密
       * @param input 待解密的数据
       * @param key 密钥
       * @return byte[] 解密后的数据
       * @throws Exception
       */
       public  static  byte [] decryptData (byte [] input ,byte [] key ) throws  Exception 
      {
           SecretKey  deskey  = new  javax.crypto.spec.SecretKeySpec (key ,Algorithm );
           if  (debug ) System.out.println ("解密前的信息:"+byte2hex (input ));
           Cipher  c1  = Cipher.getInstance (Algorithm );
           c1.init (Cipher.DECRYPT_MODE ,deskey );
           byte [] clearByte =c1.doFinal (input );
           if  (debug )
          {
               System.out.println ("解密后的二进串:"+byte2hex (clearByte ));
               System.out.println ("解密后的字符串:"+(new  String (clearByte )));
              
  
        } return  clearByte ;
          
  
    } /**
       * 字节码转换成16进制字符串
       * @param byte[] b 输入要转换的字节码
       * @return String 返回转换后的16进制字符串
       */
       public  static  String  byte2hex (byte [] b )
      {
           String  hs ="";
           String  stmp ="";
           for  (int  n =0 ;n <b.length ;n ++)
          {
               stmp =(java.lang.Integer.toHexString (b [n ] &  0XFF ));
               if  (stmp.length ()==1 ) hs =hs +"0"+stmp ;
               else  hs =hs +stmp ;
               if  (n <b.length -1 ) hs =hs +":";
              
  
        } return  hs.toUpperCase ();
          
  
    } public  static  void  main (String [] args )
      {
           try 
          {
               debug  = false ;
               Eryptogram  etg  = new  Eryptogram ();
               byte [] key  = etg.getSecretKey ();
               System.out.println ("key = "+key );
               String  aa  = "1234567";
               byte [] data  = aa.getBytes ();
               System.out.println (data );
               byte [] en  = etg.encryptData (data ,key );
               System.out.println ("encryptData = "+new  String (en ));
               byte [] de  = etg.decryptData (en ,key );
               System.out.println ("decryptData = "+new  String (de ));
              
  
        }catch (Exception  e )
          {
               e.printStackTrace ();
              
  
        }
  
    }
  
}

 

 

[code]/** * @(#)Eryptogram.java 1.00 04/03/11 * * Copyright (c) 2003-2004 Abacus,Ltd. * * 加密解密类 * * * */ package com.abacus.common; import java.security.*; import javax.crypto.*; /** * 加密解密类 * @author WangHu * @version 1.00 2004年03月18日 */ public class Eryptogram{ private static String Algorithm="DES"; //定义 加密算法,可用 DES,DESede,Blowfish static boolean debug = false; /** * 构造子注解. */ public Eryptogram(){ } /** * 生成密钥 * @return byte[] 返回生成的密钥 * @throws exception 扔出异常. */ public static byte[] getSecretKey() throws Exception{ KeyGenerator keygen = KeyGenerator.getInstance(Algorithm); SecretKey deskey = keygen.generateKey(); if (debug) System.out.println("生成密钥:"+byte2hex(deskey.getEncoded())); return deskey.getEncoded(); } /** * 将指定的数据根据提供的密钥进行加密 * @param input 需要加密的数据 * @param key 密钥 * @return byte[] 加密后的数据 * @throws Exception */ public static byte[] encryptData(byte[] input,byte[] key) throws Exception{ SecretKey deskey = new javax.crypto.spec.SecretKeySpec(key,Algorithm); if (debug){ System.out.println("加密前的二进串:"+byte2hex(input)); System.out.println("加密前的字符串:"+new String(input)); } Cipher c1 = Cipher.getInstance(Algorithm); c1.init(Cipher.ENCRYPT_MODE,deskey); byte[] cipherByte=c1.doFinal(input); if (debug) System.out.println("加密后的二进串:"+byte2hex(cipherByte)); return cipherByte; } /** * 将给定的已加密的数据通过指定的密钥进行解密 * @param input 待解密的数据 * @param key 密钥 * @return byte[] 解密后的数据 * @throws Exception */ public static byte[] decryptData(byte[] input,byte[] key) throws Exception{ SecretKey deskey = new javax.crypto.spec.SecretKeySpec(key,Algorithm); if (debug) System.out.println("解密前的信息:"+byte2hex(input)); Cipher c1 = Cipher.getInstance(Algorithm); c1.init(Cipher.DECRYPT_MODE,deskey); byte[] clearByte=c1.doFinal(input); if (debug){ System.out.println("解密后的二进串:"+byte2hex(clearByte)); System.out.println("解密后的字符串:"+(new String(clearByte))); } return clearByte; } /** * 字节码转换成16进制字符串 * @param byte[] b 输入要转换的字节码 * @return String 返回转换后的16进制字符串 */ public static String byte2hex(byte[] b) { String hs=""; String stmp=""; for (int n=0;n 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值