java加密解密

/**
   * @ ( # ) Eryptogram.java 1.00 04 / 03 / 11
   *
   * Copyright ( c ) 2003 - 2004 Abacus , Ltd.
   *
   * 加密解密类
   *
   */**
  *@(#)Eryptogram.java1.0004/03/11
  *
  *Copyright(c)2003-2004Abacus,Ltd.
  *
  *加密解密类
  *
  *
  *
  */
  package com.abacus.common ;
  
import java.security. *;
  
import javax.crypto. *;
  
/**
  *加密解密类
  *@authorWangHu
  *@version1.002004年03月18日
  */
  public class Eryptogram 
  {
  
    private static String Algorithm ="DES";
      
//定义加密算法,可用DES,DESede,Blowfish
      static boolean debug =false ;
      
/**
      *构造子注解.
      */
      public Eryptogram ()
      {
      }
      
/**
      *生成密钥
      *@returnbyte[]返回生成的密钥
      *@throwsexception扔出异常.
      */
      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 ();
  
    }
      
/**
      *将指定的数据根据提供的密钥进行加密
      *@paraminput需要加密的数据
      *@paramkey密钥
      *@returnbyte[]加密后的数据
      *@throwsException
      */
      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 ;
  
    }
      
/**
      *将给定的已加密的数据通过指定的密钥进行解密
      *@paraminput待解密的数据
      *@paramkey密钥
      *@returnbyte[]解密后的数据
      *@throwsException
      */
      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进制字符串
      *@parambyte[]b输入要转换的字节码
      *@returnString返回转换后的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 ();
  
        }
  
    }

   *
   * /
   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 ()
      {
      }
      /**
      *生成密钥
      *@returnbyte[]返回生成的密钥
      *@throwsexception扔出异常.
      */
      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 ();
  
    }
      /**
      *将指定的数据根据提供的密钥进行加密
      *@paraminput需要加密的数据
      *@paramkey密钥
      *@returnbyte[]加密后的数据
      *@throwsException
      */
      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 ;
  
    }
      /**
      *将给定的已加密的数据通过指定的密钥进行解密
      *@paraminput待解密的数据
      *@paramkey密钥
      *@returnbyte[]解密后的数据
      *@throwsException
      */
      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进制字符串
      *@parambyte[]b输入要转换的字节码
      *@returnString返回转换后的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 ();
  
        }
  
    }
 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值