淺析加解密的例子

總是想整理些東西出來,但是平時工作太忙,好不容易今晚抽出點時間把之前寫的
一些小方法總結下,作爲一個引子,希望以後有時間和精力寫出真正的乾貨出來。
見笑了。

package com.rrtx.card.xpay.action;

import java.io.UnsupportedEncodingException;

import cn.jpush.api.utils.Base64;

import com.rrtx.card.encrypt.ProcessMessage;
import com.rrtx.card.util.CommonUntil;
import com.rrtx.card.xpay.util.DesUtils;

public class myWayTest {
    /**
     * 解密
     * @param encStr
     * @throws Exception
     */
    public static void des (String encStr) throws Exception{
         DesUtils des = DesUtils.getInstance();
         String key = "ad?<>[]=+-12.,';";
         byte[] k = key.getBytes();
         char[] encByte = encStr.toCharArray();
         byte[] dec = des.decrypt(Base64.decode(encByte), k, null);
         String decStr = new String(dec);
         System.out.println("解密後的數據"+decStr);
    }
    /**
     * 加密
     * @param password
     * @return
     * @throws Exception
     */
     public static String jiami(String password) throws Exception {

         DesUtils des = DesUtils.getInstance();
        // 此處爲密匙
        String key = "ad?<>[]=+-12.,';";
//       String key = "wangpeng";
        // 將密碼和密匙轉換爲byte數組
        byte[] pwd = password.getBytes();
        byte[] k = key.getBytes();
        // 加密
        byte[] enc = des.encrypt(pwd, k, null);
        System.out.println("加密後的byte數據: "+enc);
        String encStr = new String(Base64.encode(enc));
        System.out.println("加密後的字符串數據: "+ encStr);
        return encStr;
     }
     /**
      * 加密加解密
      * @throws Exception
      */
     public static void ss () throws Exception {
         DesUtils des = DesUtils.getInstance();
         String password = "123456";
        // 此處爲密匙
        String key = "ad?<>[]=+-12.,';";
//       String key = "wangpeng";
        // 將密碼和密匙轉換爲byte數組
        byte[] pwd = password.getBytes();
        byte[] k = key.getBytes();
        // 加密
        byte[] enc = des.encrypt(pwd, k, null);
        System.out.println("加密後的byte數據: "+enc);
        String encStr = new String(Base64.encode(enc));
        System.out.println("加密後的字符串數據: "+ encStr);

        /***************解密**********************/
        //encStr = tes.decode(encStr);
        char[] encByte = encStr.toCharArray();
        byte[] dec = des.decrypt(Base64.decode(encByte), k, null);
        String decStr = new String(dec);
        System.out.println("解密後的數據"+decStr);
     }
/**
 * 對漢字或字符串進行編碼再解碼
 * @param name
 */
 public static void encodeAndDecode (String name) {
     if (CommonUntil.isEmpty(name)) {
         name = "測試王";
     }
     try {
             // 編碼
            String encodeName = java.net.URLEncoder.encode(name, "UTF-8");
            System.out.println(encodeName);
            // 解碼
            String decodeName = java.net.URLDecoder.decode(encodeName, "UTF-8");
            System.out.println(decodeName);
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
     }

    public static void signAndCheckSign (String transdata ) {
        byte[] signData1 = new byte[2048];
        if (CommonUntil.isEmpty(transdata)) {
            transdata = "123456";
        }
        signData1 = ProcessMessage.signMessage(transdata, "D:/ruirong/apache-tomcat-6.0.37/webapps/xpay/cert/private.pfx",
                "rrtx1234");
        String signData = new String(signData1);
        System.out.println("簽名後的字符串 signData :" + signData);
        System.out.println("簽名成功");
        String k = "MIIDmjCCAoKgAwIBAgIJALbVA79lN8LfMA0GCSqGSIb3DQEBCwUAMGIxCzAJBgNV"+
"BAYTAkNOMQ8wDQYDVQQIDAZzaGFueGkxDzANBgNVBAcMBnNoYW54aTEPMA0GA1UE"+
"CgwGd3V6aG91MQ8wDQYDVQQLDAZ3dXpob3UxDzANBgNVBAMMBnd1emhvdTAeFw0x"+
"NzA5MDYwODA2MjVaFw0xODA5MDYwODA2MjVaMGIxCzAJBgNVBAYTAkNOMQ8wDQYD"+
"VQQIDAZzaGFueGkxDzANBgNVBAcMBnNoYW54aTEPMA0GA1UECgwGd3V6aG91MQ8w"+
"DQYDVQQLDAZ3dXpob3UxDzANBgNVBAMMBnd1emhvdTCCASIwDQYJKoZIhvcNAQEB"+
"BQADggEPADCCAQoCggEBAMYkp8/nxLjXhSIzss/ba1hpxN4spdRWrEYxqniIr379"+
"0zZd0YjlPiXgag4FzhZSNOxTeq35msNyeeLUsKt6Ym01MTqaDnsUKNGF0qnIPIHy"+
"AyWoMXwBy6Cwr/+NlClkkZocV3aKrFvj0EXC9HmFfExfgdWTebyQJfCMBghGGplq"+
"Dz6P5rA1cSXUR1H9ZQuePzF+SSMErOpXsIk/De7qG6stzZgQslA9RYIkwjGpy6vU"+
"OvZNXqGM1cTyQwA7jK8gVY1G6uP3YcZfeQylFabiijCmerj/e6qQeeK9sP5c5Ug7"+
"KHePf8LA8yial+ycTY60TIpVdjs9xki3X0b9VpYEJXUCAwEAAaNTMFEwHQYDVR0O"+
"BBYEFNzkD9rY3iO8IfTw/9GFs6o/Q5eZMB8GA1UdIwQYMBaAFNzkD9rY3iO8IfTw"+
"/9GFs6o/Q5eZMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAMP3"+
"0YARHg2rulB8uKLHsLrF4CCBxBpZklSgB3Ea13ARcoJhTgdF0+/ieK3pU1sG9PhV"+
"Z5jWB8y8XZnbI5PPPlGZx3THBim/i7J0RsSPaYYz3+QUFR0V9k5UhDlV3vji4PzZ"+
"CD0vRDTAppxJmNdxbn6EpLg2fZ7ZfiKoRhLyNnu5bQKt/TWaKnxVUZ48jvs9mbOH"+
"pT1WNtIuONpaGEnsCuGtJiEX3K3qIBMQrULKc+Ooj71WtpmigcoT1NPeP1EHDukY"+
"IhLMTo4kYLtZMbG9CE0XMgtH2+26rTGo6E7vt3DUAB48sZ8bvQ45ICeOuMt1HT1v"+
"iw0JZappRwd+41LwyIY=";
        Boolean flag = ProcessMessage.verifyMessage(transdata, signData, k.getBytes());
        if(flag){
            // 說明驗籤成功,將數據返回到PrepaidCardAction
//          return null;
            System.out.println("驗籤成功");
        } else{
            // 驗籤失敗
            System.out.println("驗籤失敗");
        }
    }
    public static void main (String[] args) throws Exception {
        signAndCheckSign("456789");
        // 加密
        String encStr = jiami("123456");
        // 解密
        des(encStr);
        // 加密+解密
//      ss();
         // 解密
//      des("M6HWbg4kLZw="); 
        // 編碼加解碼
        encodeAndDecode("王朋朋");
    } 
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章