Terry.Li-彬

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

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            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 ;
              
          /**
              *構(gòu)造子注解.
              
          */
              
          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 ();
              }
              
          /**
              *將指定的數(shù)據(jù)根據(jù)提供的密鑰進行加密
              *@paraminput需要加密的數(shù)據(jù)
              *@paramkey密鑰
              *@returnbyte[]加密后的數(shù)據(jù)
              *@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 ;
              }
              
          /**
              *將給定的已加密的數(shù)據(jù)通過指定的密鑰進行解密
              *@paraminput待解密的數(shù)據(jù)
              *@paramkey密鑰
              *@returnbyte[]解密后的數(shù)據(jù)
              *@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 ;
              }
              
          /**
              *字節(jié)碼轉(zhuǎn)換成16進制字符串
              *@parambyte[]b輸入要轉(zhuǎn)換的字節(jié)碼
              *@returnString返回轉(zhuǎn)換后的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加密參數(shù) (java版) 2013-09-29 00:08 是電飯鍋
          asd飛  回復  更多評論
            

          主站蜘蛛池模板: 舒兰市| 偃师市| 图片| 东乡族自治县| 丽江市| 呼伦贝尔市| 太保市| 西贡区| 上蔡县| 达日县| 吉木萨尔县| 赞皇县| 威远县| 革吉县| 彰化市| 岑巩县| 同心县| 黔江区| 崇左市| 重庆市| 利津县| 滁州市| 天津市| 永寿县| 蕉岭县| 宁海县| 星座| 罗城| 宜丰县| 介休市| 紫金县| 甘谷县| 安远县| 疏附县| 高淳县| 桑植县| 双柏县| 边坝县| 松桃| 宁蒗| 米泉市|