1. java 微信小程序,解密

/**

* @param sessionKey

* @param encryptedData

* @param iv

* @Description: 获取C端小程序手机号的解析

*/

public static EncryptedDataOfMobile getEncryptedDataOfMobile(String sessionKey, String encryptedData, String iv) {

logger.info("getEncryptedData sessionKey[{}], encryptedData[{}], iv[{}]", sessionKey, encryptedData, 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 && resultByte.length >0) {

String result =new String(resultByte,"UTF-8");

logger.info("getEncryptedData result[{}]", result);

return FasterJsonTool.readValue(result, EncryptedDataOfMobile.class);

}

}catch (Exception e) {

logger.info("getEncryptedDataOfMobile 解密手机号异常", e);

}

return null;

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • /** * @author vincent * @date */ @Controller @RequestMapp...
    有梦想的咸鱼_87af阅读 859评论 0 0
  • 1. ASCII 编码 ASCII(American Standard Code for Information ...
    s酸菜阅读 8,774评论 0 8
  • 概述 之前一直对加密相关的算法知之甚少,只知道类似DES、RSA等加密算法能对数据传输进行加密,且各种加密算法各有...
    Henryzhu阅读 3,080评论 0 14
  • pyspark.sql模块 模块上下文 Spark SQL和DataFrames的重要类: pyspark.sql...
    mpro阅读 9,554评论 0 13
  • 经济学是什么? 以我现在的了解来看,经济学是一门教人如何决策的学问。 决策需要什么?比较和选择。在比较之后,选择一...
    老王头碎碎念阅读 398评论 0 0