floger 发表于 2013-2-7 16:57:02

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 &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 ();           }     }  }
页: [1]
查看完整版本: url加密参数 (java版)