package com.example.filedemo.util.fuwufang; import com.example.filedemo.util.MD5Util; import com.example.filedemo.util.RSAUtil; import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; public class Tx { public static void main(String[] args) throws Exception { // 公钥 String publicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCDTQjKgrHLJ6bHlkC/Z1yLBCkXf1xPlGqE5Y4OzyD0ltGpOtEEKGgS1dqRVIL4KB2ZcJ4YNeinK1OIF1VXQN89JRdp9RILpXmCR3I62oPFbLllYBWxOWQrybLDIiMLortHSQuEDihXfoCPIqJmpLruDYOqinc+ERh/1Ovy2j4JHwIDAQAB"; // 私钥 String privateKey = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBALoeWEJKePYPWAQtJn4A+aI59/CfZtAfFZYnkF47v7j+JskM6aUoGkLixrbL6+hRgXw29PvndjthaoMw01SHwicipqfNxZHBYubaI9j9V+x+TUdlMuLPTnDJ8hn4G/gSjbHVNv7fxzKz9LABqiirElPgZnXuaOMckbTqr9JVTGaXAgMBAAECgYBIpQd1+HN2N073clgP3nmRZGbuOIl8umVGknK7FT8kCa9B0hRwLlLxwGondzjBGO8deKXunM19J+zW//u8hrC0wud/wKbxEaf4hjBADuLqTyh2XyEEWgtm+8+AdiuDUlt3VS5RHjBzam5+/XJUjxo7gtYmvN8R3kp4Ey1cILuGQQJBAOsYC7oofAr8/ZWMZApW5fPShCoapdigRJOfGlaAB5ppmc3U4/xl7KqpDaR76eWiAXRNaBB6L6T1VsMoTe7XQykCQQDKq12WFq6+/pGT7QVuRURUFt6JSCkoUlSm08bFKDvo11ZFYApZqBzlNUhVj73GsRs/m0KZD3/QMldfZg7Y81O/AkBlHpGkv9ci7tCwK5O4Msp0Bp+ccJvXQpBcorm0bRtYGoXyV9i8bqbOfSqGDlp70CQp/0V8mOG3ZWOtS7/BtMuJAkAnErDBTfA0vGmeplSktM/+kkYnG3Vr46uUWkH5Is+iDVoBmAmGzYV8nzAp5sOEugJx2eIWFkni/sGfj9KO+yKLAkEAvBGuPTz8yqUX8pAkB4qJQ1/pvnVPOt/r+cT1k+tuVoPtjGxbaLd1D/wNWsVdUFq6vrRYEioFnA9iGqjmCed7Lg=="; /** * 加密及获取签名 */ //源报文(未加密) // String msg = "{\n" + // " \"CLD_HEADER\":{\n" + // " \"CLD_TX_CHNL\":\"YS44000007000524\",\n" + // " \"CLD_TX_TIME\":\"20191112145911\",\n" + // " \"CLD_TX_CODE\":\"svc_occMebOrderPush\",\n" + // " \"CLD_TX_SEQ\":\"\"\n" + // " },\n" + // " \"CLD_BODY\":{\n" + // " \"USR_TEL\":\"18242028306\",\n" + // " \"DCCP_AVY_ID\":\"00001\",\n" + // " \"DCCP_BSC_INF_SN\":\"00001\",\n" + // " }\n" + // "}"; // msg = "{\n" + // "\"CLD_HEADER\":{\n" + // "\"CLD_TX_CHNL\":\"YS44000007000524\",\n" + // "\"CLD_TX_TIME\":\"20191112145911\",\n" + // "\"CLD_TX_CODE\":\"svc_occMebOrderPush\",\n" + // "\"CLD_TX_SEQ\":\"\"\n" + // "},\n" + // "\"CLD_BODY\":{\n" + // "\"USR_TEL\":\"18242028306\",\n" + // "\"DCCP_AVY_ID\":\"00001\",\n" + // "\"DCCP_BSC_INF_SN\":\"00001\",\n" + // "}\n" + // "}"; // msg = "{" + // "\"CLD_HEADER\":{" + // "\"CLD_TX_CHNL\":\"YS44000007000524\"," + // "\"CLD_TX_TIME\":\"20191112145911\"," + // "\"CLD_TX_CODE\":\"svc_occMebOrderPush\"," + // "\"CLD_TX_SEQ\":\"\"" + // "}," + // "\"CLD_BODY\":{" + // "\"USR_TEL\":\"18242028306\"," + // "\"DCCP_AVY_ID\":\"00001\"," + // "\"DCCP_BSC_INF_SN\":\"00001\"," + // "}" + // "}"; // msg = "{\n" + // "\"CLD_HEADER\":{\n" + // "\"CLD_TX_CHNL\":\"YS44000007000524\",\n" + // "\"CLD_TX_TIME\":\"20191112145911\",\n" + // "\"CLD_TX_CODE\":\"svc_occMebOrderPush\",\n" + // "\"CLD_TX_SEQ\":\"\"\n" + // "},\n" + // "\"CLD_BODY\":{\n" + // "\"USER_ID\":\"0001\",\n" + // "\"ORDER_ID\":\"1231\",\n" + // "\"ORDER_DT\":\"20220427120000\",\n" + // "}\n" + // "}"; String msg = "{\n" + " \"CLD_HEADER\":{\n" + " \"CLD_TX_CHNL\":\"YS44000009000327\",\n" + " \"CLD_TX_TIME\":\"20191112145911\",\n" + " \"CLD_TX_CODE\":\"svc_occMebOrderPush\",\n" + " \"CLD_TX_SEQ\":\"\"\n" + " },\n" + " \"CLD_BODY\":{\n" + " \"USER_ID\":\"0001\",\n" + " \"ORDER_ID\":\"1231\",\n" + " \"ORDER_DT\":\"20220427120000\",\n" + " }\n" + "}"; msg = "{\"CLD_HEADER\":{\"CLD_TX_CHNL\":\"YS44000009000327\",\"CLD_TX_TIME\":\"20220809173259\",\"CLD_TX_CODE\":\"svc_occMebOrderPush\",\"CLD_TX_SEQ\":\"202208091732596048392\"},\"CLD_BODY\":{\"USER_ID\":\"ZF0055975697X\",\"ORDER_ID\":\"202208091732596048392\",\"ORDER_DT\":\"20220809173259\",\"TOTAL_AMT\":\"0.01\",\"PAY_AMT\":\"0.00\",\"DISCOUNT_AMT\":\"0.00\",\"ORDER_STATUS\":\"0\",\"REFUND_STATUS\":\"0\",\"MCT_NM\":\"院线通\"}}"; // msg = "{\n" + // " \"CLD_HEADER\":{\n" + // " \"CLD_TX_CHNL\":\"YS44000009000327\",\n" + // " \"CLD_TX_TIME\":\"20191112145911\",\n" + // " \"CLD_TX_CODE\":\"svc_occWhiteListUpdate\",\n" + // " \"CLD_TX_SEQ\":\"\"\n" + // " },\n" + // " \"CLD_BODY\":{\n" + // " \"UWL_ID\":\"18242028306\",\n" + // " \"UWL_STATUS\":\"1000000000000000\"\n" + // " }\n" + // "}"; //String msg = "{\"CLD_BODY\":{\"BRANCHID\":\"\",\"CUSTOMERID\":\"\",\"EDDT_TM\":\"\",\"MSGRP_JRNL_NO\":\"810000719394\",\"ONLN_PY_TXN_ORDR_ID\":\"WAP2022012415285709902\",\"PAGE\":1,\"POS_CODE\":\"\",\"POS_ID\":\"\",\"SCN_IDR\":\"\",\"STDT_TM\":\"\",\"TXN_PRD_TPCD\":\"06\",\"TXN_STATUS\":\"00\",\"TX_TYPE\":\"0\"},\"CLD_HEADER\":{\"CLD_TX_CHNL\":\"YS44000009000547\",\"CLD_TX_CODE\":\"svc_occPlatOrderQry\",\"CLD_TX_SEQ\":\"YSTEST0120220412094349000000\",\"CLD_TX_TIME\":\"20220412094349\"}}"; //msg = "{\"CLD_HEADER\":{\"CLD_TX_CHNL\":\"YS44000008000559\",\"CLD_TX_TIME\":\"20220524155153\",\"CLD_TX_CODE\":\"svc_occMebOrderPush\",\"CLD_TX_SEQ\":\"d114f967-f4cb-4331-8f40-6e396d6680ef\"},\"CLD_BODY\":{\"USER_ID\":\"123\",\"ORDER_ID\":\"371944\",\"ORDER_DT\":\"20220524155153\",\"TOTAL_AMT\":\"0.01\",\"ORDER_STATUS\":\"1\",\"REFUND_STATUS\":\"0\",\"MCT_NM\":\"宁波方太营销有限公司\"}}"; // msg = "{\"CLD_BODY\":\n" + // "{\"ONLN_PY_TXN_ORDR_ID\":\"1563461616486464648\",\n" + // "\"PAGE\":\"1\",\n" + // "\"TXN_PRD_TPCD\":\"06\",\n" + // "\"TXN_STATUS\":\"02\",\n" + // "\"TX_TYPE\":\"0\"\n" + // "},\n" + // "\"CLD_HEADER\":{\n" + // "\"CLD_TX_CHNL\":\"YS44000008000605\",\n" + // "\"CLD_TX_CODE\":\"svc_occPlatOrderQry\",\n" + // "\"CLD_TX_TIME\":\"20220530091747\",\n" + // "\"CLD_TX_SEQ\":\"\"}\n" + // "}"; // 公钥加密得到密文并使用base64处理 String enc_msg = RSAUtil.encrypt(msg, publicKey); BASE64Encoder encoder = new BASE64Encoder(); enc_msg = encoder.encode(enc_msg.getBytes("UTF-8")); enc_msg = enc_msg.replaceAll("\r\n", "").replaceAll("\r", "").replaceAll("\n", ""); System.out.println("公钥加密得到密文并使用base64处理(cnt):"); System.out.println(enc_msg); // 根据源报文+私钥获得MD5签名 String mac_info = MD5Util.getMD5(msg + privateKey); System.out.println("根据源报文+私钥获得MD5签名(mac):"); System.out.println(mac_info); /** * 解密及验签 */ // base64逆处理并用私钥解密 BASE64Decoder decoder = new BASE64Decoder(); //enc_msg = "blM2REE0RUdYazlVaDN1RWRQamNOUmFUUE5aUkNsN2xieVZYNjNZWFZKUlRLc1JIbjlEWVdmUzZuSi93TUFTSmZwaHhvWjRyZ1FubwpQQmtQZWJXSzQzWFZnb3RqdkhYL2I2eWhtOWt3S0dsSTFmQzJVczZ4SWpLTHU1Zm1rT3RVZUFkSDIxMDdMbENxK3JmRklqVkVpZTBMCnA3NmdEVnUwbDVUV1R1STJ0UVFxRDJwT3BkR0J6c1NESGhRdlBVN2tOaWlKTTdkQzFXaG5Sc3ZRUEpFcUw0eVVhNFQ0REFPSWRFVEIKSy92WWtIY1ZWbjUrcXZFb0krQmZwYXdaTzExQmdYVTcya1FXRFBTYkZBaWlXakZWeVRmM2dXbTMxVXVCWjN3S2tWOHcwZVFCMzB2cApSdTlqWTNqZSs2WEdVNXRPT0Vhcndhak0yN1B3NjRxVjdRU0diUT09Cg=="; enc_msg = new String(decoder.decodeBuffer(enc_msg),"UTF-8"); String dec_msg = RSAUtil.decrypt(enc_msg, privateKey); System.out.println("base64逆处理并用私钥解密:"); System.out.println(dec_msg); // 验签 String dec_mac = MD5Util.getMD5(dec_msg + privateKey); if (mac_info.equals(dec_mac)) { System.out.println("验签通过"); } else { System.out.println("验签失败"); } } }