/javaSecu/src/com/liwei/javasecu/corejava/Eryptogram.java
Java | 145 lines | 74 code | 18 blank | 53 comment | 9 complexity | 3fcc81407979ebbac18c25e4f2844c1c MD5 | raw file
- package com.liwei.javasecu.corejava;
-
- /**
- * @(#)Eryptogram.java 1.00 04/03/11
- *
- * Copyright (c) 2003-2004 Abacus,Ltd.
- *
- * ?????
- *
- *
- *
- */
- import javax.crypto.Cipher;
- import javax.crypto.KeyGenerator;
- import javax.crypto.SecretKey;
-
- /**
- * ?????
- *
- * @author WangHu
- * @version 1.00 2004?03?18?
- */
- public class Eryptogram {
- private static String Algorithm = "DES";
- // ?? ????,?? DES,DESede,Blowfish
- static boolean debug = false;
-
- /**
- * ?????.
- */
- public Eryptogram() {
-
- }
-
- /**
- * ????
- *
- * @return byte[] ???????
- * @throws exception
- * ????.
- */
- 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();
-
- }
-
- /**
- * ?????????????????
- *
- * @param input
- * ???????
- * @param key
- * ??
- * @return byte[] ??????
- * @throws Exception
- */
- 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;
-
- }
-
- /**
- * ?????????????????????
- *
- * @param input
- * ??????
- * @param key
- * ??
- * @return byte[] ??????
- * @throws Exception
- */
- 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?????
- *
- * @param byte[] 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 + "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();
-
- }
- }
- }