企业微信会话存档解密

在企业微信会话存档解密中,腾讯官方文档是这样说明的:

encrypt_random_key内容解密说明:
encrypt_random_key是使用企业在管理端填写的公钥(使用模值为2048bit的秘钥),采用RSA加密算法进行加密处理后base64 encode的内容,加密内容为企业微信产生。RSA使用PKCS1。
企业得到消息内容后,需先进行base64 decode,使用消息指明版本的私钥,使用RSA PKCS1算法进行解密,得到解密内容,为下一步进行消息明文解析做准备。

对于解密不熟悉的人看了后 满脸问号???  什么意思,我该怎么搞?sdk FinanceDemo 文件中也没有展示这里该怎么解密。然后无从下手,网上文档也很少!!!  稀碎

翻译一下上面的

需要对接收到的消息中encrypt_random_key进行base64 decode, 然后使用对应的私钥,使用rsa PKCS1算法进行解密。

具体该怎么弄,废话不多说了,直接干

为了方便先在http://tool.chacuo.net/cryptrsapubkey 这个网址上生成2048位 PKCS1秘钥对 方便验证

用此方法先获取秘钥
public static PrivateKey getPrivateKey(String privKeyPEM) throws Exception{

    String privKeyPEMnew = privKeyPEM.replaceAll("\\n", "").replace("-----BEGIN RSA PRIVATE KEY-----", "").replace("-----END RSA PRIVATE KEY-----", "");
    byte[] bytes = java.util.Base64.getDecoder().decode(privKeyPEMnew);

    DerInputStream derReader = new DerInputStream(bytes);
    DerValue[] seq = derReader.getSequence(0);
    BigInteger modulus = seq[1].getBigInteger();
    BigInteger publicExp = seq[2].getBigInteger();
    BigInteger privateExp = seq[3].getBigInteger();
    BigInteger prime1 = seq[4].getBigInteger();
    BigInteger prime2 = seq[5].getBigInteger();
    BigInteger exp1 = seq[6].getBigInteger();
    BigInteger exp2 = seq[7].getBigInteger();
    BigInteger crtCoef = seq[8].getBigInteger();

    RSAPrivateCrtKeySpec keySpec = new RSAPrivateCrtKeySpec(modulus, publicExp, privateExp, prime1, prime2, exp1, exp2, crtCoef);
    KeyFactory keyFactory = KeyFactory.getInstance("RSA");
    PrivateKey privateKey = keyFactory.generatePrivate(keySpec);
    return privateKey;
}

然后 对 encrypt_random_key 进行解密

Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.DECRYPT_MODE, privateKey);/getPrivateKey()返回的privateKey

byte[] randomkeybyte = Base64.getDecoder().decode(encrypt_random_key );
byte[] finalrandomkeybyte = cipher.doFinal(randomkeybyte);
String finalrandomkey = new String(finalrandomkeybyte);
最后调用微信接口解密就行 
DecryptData(finalrandomkey,encrypt_chat_msg);
  • 8
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 55
    评论
Spring Boot是一种用于开发Java应用程序的开源框架,它简化了基于Spring框架的应用程序的配置和部署。企业微信是一款为企业提供即时通讯和协同办公的应用,它能轻松满足企业的沟通和协作需求。 为了在Spring Boot应用程序中引入企业微信会话存档SDK,需要执行以下步骤: 1. 下载企业微信会话存档SDK:你可以从企业微信官方网站或其他可信来源下载适用于Java企业微信会话存档SDK。 2. 引入SDK依赖:将下载的SDK文件导入Spring Boot应用程序的依赖管理系统中。可以使用Maven或Gradle等构建工具来管理依赖,并在配置文件中指定SDK的版本号。 3. 创建企业微信会话存档SDK的配置文件:在Spring Boot的配置文件中,添加企业微信会话存档SDK所需的配置参数,如企业微信的Corpid、Secret和Agentid等。 4. 创建企业微信会话存档SDK的服务类:在Spring Boot应用程序中创建一个服务类,用于调用企业微信会话存档SDK的接口。根据业务需求,可以根据文档提供的接口进行数据的存储、获取等操作。 5. 在应用程序中调用企业微信会话存档服务:在需要使用企业微信会话存档功能的地方,通过注入企业微信会话存档服务的实例,调用相应的方法来实现会话存档的功能。 需要注意的是,引入企业微信会话存档SDK前,要确保企业微信账号已通过认证并开通了相应的权限。 以上是使用Spring Boot引入企业微信会话存档SDK的基本步骤,根据具体的需求,可能还需要对业务逻辑进行进一步的处理和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 55
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值