Terry.Li-彬

          虛其心,可解天下之問;專其心,可治天下之學;靜其心,可悟天下之理;恒其心,可成天下之業。

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            143 隨筆 :: 344 文章 :: 130 評論 :: 0 Trackbacks
          **

          *加密解密類
          *
          *
          *
          */
          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 ();
                  }
              }
          }
          posted on 2008-12-18 08:51 禮物 閱讀(5282) 評論(1)  編輯  收藏 所屬分類: java

          評論

          # re: url加密參數 (java版) 2013-09-29 00:08 是電飯鍋
          asd飛  回復  更多評論
            

          主站蜘蛛池模板: 山东省| 镇江市| 临西县| 蓬莱市| 墨江| 寿光市| 叙永县| 海安县| 益阳市| 黔江区| 高要市| 临潭县| 渭南市| 凤山市| 岐山县| 资阳市| 安乡县| 阿城市| 大关县| 桃江县| 舟山市| 商洛市| 永福县| 大洼县| 柯坪县| 嘉定区| 庄浪县| 漳浦县| 水富县| 运城市| 浪卡子县| 平顺县| 远安县| 林周县| 皋兰县| 延长县| 同德县| 湖口县| 浮梁县| 宝山区| 手游|