九阴真经


微信小程序解密算法

<h5>示例:</h5> <h6>依赖:</h6> <pre><code>&lt;dependency&gt; &lt;groupId&gt;org.codehaus.xfire&lt;/groupId&gt; &lt;artifactId&gt;xfire-core&lt;/artifactId&gt; &lt;version&gt;1.2.6&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.bouncycastle&lt;/groupId&gt; &lt;artifactId&gt;bcprov-jdk16&lt;/artifactId&gt; &lt;version&gt;1.46&lt;/version&gt; &lt;/dependency&gt;</code></pre> <pre><code>package com.syhd.user.test; import com.alibaba.fastjson.JSONObject; import org.bouncycastle.jce.provider.BouncyCastleProvider; import org.bouncycastle.util.Arrays; import org.bouncycastle.util.encoders.Base64; import com.alibaba.fastjson.JSONObject; import javax.crypto.BadPaddingException; import javax.crypto.Cipher; import javax.crypto.IllegalBlockSizeException; import javax.crypto.NoSuchPaddingException; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; import java.io.UnsupportedEncodingException; import java.security.*; import java.security.spec.InvalidParameterSpecException; /** * TODO * * @author jxd * @version 1.0 * * @date 2020/11/16 17:27 */ public class EE { public static void main(String[] args) { String data = "DgqgK0AdzLE5YZ5mgbX5/8JoTZzotocrf64pLlaogtUO89ZlCAePEMmgTX7iRxQ7E4lDYXyR4o6AQqjCt2NhHwk84SzGA8ENaIbRmCgHaziE7zFQjJfZn+Hu0e0AJusA1RKmsyu9Ss3dSuE2GtgeHNNKYX3sQ/j59V7jcuzEVP4A4n0kiMTa4ZSA5UqAlxd50OkXtuJ+5oMfbrhhYy8aIfiA7oE/XNHy9ZMMxfHrqSCM+3ysHN3vo6O4FeL/4esU6J1EtMJU+xsACbjwy3IO0+ONKCTBjy45N18uGpqqNnbytJFEzqwQTl9p95kQdHTNkBvZpMb+9xYfJa9ZoT9uwetZseJokRPWhV1CSodh8XL251UcTmMt4sTy/eXICf3Ugw/0jaK/wgC2rCBitQT1S9fNwS11Xi8jijxXAsYRPuPYLVl8tj0GEEmXr/ZoOI01T7+vuvD8Be6t63ssQ07mIC3vZhui1sYntqM7nqm1DTI="; String iv = "QazBj4L+LoLRUWf15QXgJw=="; String sessionKey = "/V+4egK6u7htUvbBV0o7Rw=="; JSONObject sss = getUserInfo(data, sessionKey, iv); System.out.println(sss.toJSONString()); } /** * 获取信息 */ public static JSONObject getUserInfo(String encryptedData, String sessionkey, String iv) { // 被加密的数据 byte[] dataByte = Base64.decode(encryptedData); // 加密秘钥 byte[] keyByte = Base64.decode(sessionkey); // 偏移量 byte[] ivByte = Base64.decode(iv); try { // 如果密钥不足16位,那么就补足. 这个if 中的内容很重要 int base = 16; if (keyByte.length % base != 0) { int groups = keyByte.length / base + (keyByte.length % base != 0 ? 1 : 0); byte[] temp = new byte[groups * base]; Arrays.fill(temp, (byte) 0); System.arraycopy(keyByte, 0, temp, 0, keyByte.length); keyByte = temp; } // 初始化 Security.addProvider(new BouncyCastleProvider()); Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding", "BC"); SecretKeySpec spec = new SecretKeySpec(keyByte, "AES"); AlgorithmParameters parameters = AlgorithmParameters.getInstance("AES"); parameters.init(new IvParameterSpec(ivByte)); cipher.init(Cipher.DECRYPT_MODE, spec, parameters);// 初始化 byte[] resultByte = cipher.doFinal(dataByte); if (null != resultByte &amp;&amp; resultByte.length &gt; 0) { String result = new String(resultByte, "UTF-8"); return JSONObject.parseObject(result); } } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (NoSuchPaddingException e) { e.printStackTrace(); } catch (InvalidParameterSpecException e) { e.printStackTrace(); } catch (IllegalBlockSizeException e) { e.printStackTrace(); } catch (BadPaddingException e) { e.printStackTrace(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (InvalidKeyException e) { e.printStackTrace(); } catch (InvalidAlgorithmParameterException e) { e.printStackTrace(); } catch (NoSuchProviderException e) { e.printStackTrace(); } return null; } } </code></pre>

页面列表

ITEM_HTML