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 礼物 阅读(5210) 评论(1)  编辑  收藏 所属分类: java

评论

# re: url加密参数 (java版) 2013-09-29 00:08 是电饭锅
asd飞  回复  更多评论