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