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飛  回復  更多評論
            

          主站蜘蛛池模板: 枣强县| 周口市| 九龙坡区| 崇信县| 兴宁市| 建瓯市| 曲水县| 凤山市| 太仆寺旗| 藁城市| 聊城市| 盐津县| 陕西省| 鄂托克旗| 克东县| 福州市| 淮安市| 宁都县| 金寨县| 大田县| 游戏| 商洛市| 佛冈县| 黄梅县| 井冈山市| 黄浦区| 体育| 慈利县| 滨海县| 健康| 临澧县| 泽库县| 辉南县| 德庆县| 斗六市| 望都县| 枞阳县| 上蔡县| 绥江县| 都兰县| 融水|