1. 程式人生 > >小程序數據簽名校驗-Java端

小程序數據簽名校驗-Java端

[] jdk 代碼 secret key vid encrypt 校驗 color

JDK內置的簽名算法不包含小程序需要的(對稱解密使用的算法為 AES-128-CBC,數據采用PKCS#7填充),所以需要引用第三方jar。

    compile group: ‘org.bouncycastle‘, name: ‘bcprov-jdk15on‘, version: ‘1.54‘

以下是具體的代碼:

  //自行在構造函數中賦值
   String sessionKey;

 /**
     * AES-128-CBC解密
     * 使用PKCS填充
     * @param encryptedData
     * @param iv
     * @return
     * 
@throws Exception */ public String decryptAesPkcData(String encryptedData, String iv) throws Exception { //檢查sessionKey的長度 if (this.sessionKey.length() != 24) { throw new AesException(AesException.IllegalAesKey); } //檢查iv的長度 if (iv.length() != 24) {
throw new AesException(AesException.IllegalAesKey); } byte[] aesKey = Base64.decodeBase64(this.sessionKey); byte[] aesIV = Base64.decodeBase64(iv); byte[] aesCipher = Base64.decodeBase64(encryptedData); Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider()); Cipher cipher
= Cipher.getInstance("AES/CBC/PKCS7Padding"); Key sKeySpec = new SecretKeySpec(aesKey, "AES"); AlgorithmParameters params = AlgorithmParameters.getInstance("AES"); params.init(new IvParameterSpec(aesIV)); cipher.init(Cipher.DECRYPT_MODE, sKeySpec, params); return new String(cipher.doFinal(aesCipher), "utf-8"); }

小程序數據簽名校驗-Java端