url加密参数 (java版)

转自:http://hi.baidu.com/316133782/blog/item/e5fc74ccdcf1cc1601e92835.html

 

/**
  
  *加密解密类
  *
  *
  *
  */
  package com.abacus.common ;
  import java.security. *;
  import javax.crypto. *;
  /**
  *加密解密类
  
  */
  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 ();
           }
       }
  }
 

你可能感兴趣的:(java,html,算法,Blog,Security)