- package common;
- /**
- * @see 加密解密公共类
- * @author WangYuxin
- * @since 1.0
- * @version 2008-12-12
- */
- import java.security.*;
- import javax.crypto.*;
- public class Eryptogram {
- private static String Algorithm ="DES";
- static boolean debug = false ;
- /**
- * 构造函数注解.
- */
- public Eryptogram(){}
- /**
- * @see 生成密钥
- */
- public static byte[] getSecretKey() throws NoSuchAlgorithmException
- {
- KeyGenerator keygen=KeyGenerator.getInstance(Algorithm);
- SecretKey deskey=keygen.generateKey();
- if(debug)
- System.out.println("生成密钥:"+byte2hex (deskey.getEncoded ()));
- return deskey.getEncoded();
- }
- /**
- * @see 将指定的数据根据提供的密钥进行加密
- * @param input 需要加密的数据
- * @param key 密钥
- * @return byte[] 加密后的数据
- * @throws NoSuchPaddingException
- * @throws NoSuchAlgorithmException
- * @throws InvalidKeyException
- * @throws BadPaddingException
- * @throws IllegalBlockSizeException
- */
- public static byte[] encryptData(byte[] input,byte[] key) throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException
- {
- 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;
- }
- /**
- * @see 将给定的已加密的数据通过指定的密钥进行解密
- * @param input 待解密的数据
- * @param key 密钥
- * @return byte[] 解密后的数据
- * @throws NoSuchPaddingException
- * @throws NoSuchAlgorithmException
- * @throws InvalidKeyException
- * @throws BadPaddingException
- * @throws IllegalBlockSizeException
- */
- public static byte[] decryptData(byte[] input,byte[] key) throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException
- {
- 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;
- }
- /**
- * @see 字节码转换成16进制字符串
- * @param b 输入要转换的字节码
- * @return String 返回转换后的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+":";
- }
- }
- return hs.toUpperCase();
- }
- public static void main(String[] args)
- {
- try{
- debug=false;
- String aa="1234567";
- Eryptogram etg=new Eryptogram();
- byte[] key=Eryptogram.getSecretKey();
- System.out.println("key="+key);
- byte[] data=aa.getBytes();
- System.out.println("data="+data);
- byte[] en=Eryptogram.encryptData(data, key);
- System.out.println("encryptData="+new String(en));
- byte[] de=Eryptogram.decryptData(en, key);
- System.out.println("decryptData = "+new String(de));
- }catch(Exception e)
- {
- e.printStackTrace();
- }
- }
- }