DES加密+Base64轉換轉實現代碼

jopen 10年前發布 | 37K 次閱讀 安全相關 BASE64

首先,對用戶輸入的password進行MD5轉換,然后,對用戶輸入的Data進行des加密,最后進行base64轉換為密文; 解密,對用戶輸入的password進行MD5轉換,然后,對用戶輸入的Data進行base64解密,最后進行des解密為明文; 現在提供這樣一個幫助類,進行類似操作!

package httpVisit.action;

import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.DESKeySpec; import javax.crypto.spec.IvParameterSpec;

import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder;

/**

  • @author:Heweipo
  • @version 1.00
  • */ public class DesCoderUtil {

    private static byte[] keys = { 1, -1, 1, -1, 1, -1, 1, -1 };

    private static String key = "leagsoft";

    public static String getKey() {

     return key;
    

    }

    public static void setKey(String key) {

     DesCoderUtil.key = key;
    

    }

    /**

    • <p>
    • 對password進行MD5加密
    • @param source
    • @return
    • @return byte[]
    • author: Heweipo */ public static byte[] getMD5(byte[] source) { byte tmp[] = null; try {

       java.security.MessageDigest md = java.security.MessageDigest
               .getInstance("MD5");
       md.update(source);
       tmp = md.digest();
      

      } catch (Exception e) {

       e.printStackTrace();
      

      } return tmp; }

      /**

    • <p>
    • 采用JDK內置類進行真正的加密操作
    • @param byteS
    • @param password
    • @return
    • @return byte[]
    • author: Heweipo */ private static byte[] encryptByte(byte[] byteS, byte password[]) { byte[] byteFina = null; try {// 初始化加密/解密工具

       Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
       DESKeySpec desKeySpec = new DESKeySpec(password);
       SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
       SecretKey secretKey = keyFactory.generateSecret(desKeySpec);
       IvParameterSpec iv = new IvParameterSpec(keys);
       cipher.init(Cipher.ENCRYPT_MODE, secretKey, iv);
       byteFina = cipher.doFinal(byteS);
      

      } catch (Exception e) {

       throw new RuntimeException(e);
      

      } return byteFina; }

      /**

    • <p>
    • 采用JDK對應的內置類進行解密操作
    • @param byteS
    • @param password
    • @return
    • @return byte[]
    • author: Heweipo */ private static byte[] decryptByte(byte[] byteS, byte password[]) { byte[] byteFina = null; try {// 初始化加密/解密工具

       Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
       DESKeySpec desKeySpec = new DESKeySpec(password);
       SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
       SecretKey secretKey = keyFactory.generateSecret(desKeySpec);
       IvParameterSpec iv = new IvParameterSpec(keys);
       cipher.init(Cipher.DECRYPT_MODE, secretKey, iv);
       byteFina = cipher.doFinal(byteS);
      

      } catch (Exception e) {

       throw new RuntimeException(e);
      

      } return byteFina; }

      /**

    • <p>
    • Des加密strMing,然后base64轉換
    • @param strMing
    • @param md5key
    • @return
    • @return String
    • author: Heweipo */ public static String encryptStr(String strMing, byte md5key[]) { byte[] byteMi = null; byte[] byteMing = null; String strMi = ""; try {

       byteMing = strMing.getBytes("utf-8");
       byteMi = encryptByte(byteMing, md5key);
       BASE64Encoder base64Encoder = new BASE64Encoder();
       strMi = base64Encoder.encode(byteMi);
      

      } catch (Exception e) {

       throw new RuntimeException(e);
      

      } finally {

       byteMing = null;
       byteMi = null;
      

      } return strMi; }

      /**

    • <p>
    • Base64轉換strMi,然后進行des解密
    • @param strMi
    • @param md5key
    • @return
    • @return String
    • author: Heweipo */ public static String decryptStr(String strMi, byte md5key[]) { byte[] byteMing = null; String strMing = ""; try {

       BASE64Decoder decoder = new BASE64Decoder();
       byteMing = decoder.decodeBuffer(strMi);
       byteMing = decryptByte(byteMing, md5key);
       strMing = new String(byteMing);
      

      } catch (Exception e) {

       throw new RuntimeException(e);
      

      } finally {

       byteMing = null;
      

      } return strMing; }

      public static void main(String[] args) {

      String[] keys = {"leagsoft","leagsoftpo","leagsoftiu","leagsoftyy","leagsoftew","leagsoftmm"}; for(String key : keys){

       String data = "我是learn_more,who are you?";
       try{
           System.out.println(DesCoderUtil.encryptStr(data, DesCoderUtil.getMD5(key.getBytes("utf-8"))));
           System.out.println("--------------");
           System.out.println(DesCoderUtil.decryptStr(DesCoderUtil.encryptStr(data, DesCoderUtil.getMD5(key.getBytes("utf-8"))), 
                   DesCoderUtil.getMD5(key.getBytes("utf-8"))));
       }catch(Exception e){
           e.printStackTrace();
       }
      

      } }

}</pre></span> 來自:http://my.oschina.net/u/1989321/blog/335210

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!