url加密參數 (java版)

**

*加密解密類
*
*
*
*/
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?();
????????}
????}
}
247018.html

禮物 2008-12-18 08:51 發表評論
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章