关于加解密方案的详细说明

术语及说明

开启回调模式时,有以下术语需要了解:

1.msg_signature是签名,用于验证调用者的合法性。具体算法见以下'消息体签名'章节

2.EncodingAESKey用于消息体的加密,长度固定为43个字符,从a-z, A-Z, 0-9共62个字符中选取,是AESKey的Base64编码。解码后即为32字节长的AESKey

3.AESKey=Base64_Decode(EncodingAESKey + “=”),是AES算法的密钥,长度为32字节。AES采用CBC模式,数据采用PKCS#7填充至32字节的倍数;IV初始向量大小为16字节,取AESKey前16字节。具体详见:http://tools.ietf.org/html/rfc2315

4.msg为消息体明文,格式为XML

5.msg_encrypt = Base64_Encode( AES_Encrypt[random(16B) + msg_len(4B) + msg + $CorpID] ),是对明文消息msg加密处理后的Base64编码。其中random为16字节的随机字符串;msg_len为4字节的msg长度,网络字节序;msg为消息体明文;$CorpID为企业号的标识

消息体签名

为了验证调用者的合法性,微信在回调url中增加了消息签名,以参数msg_signature标识,企业需要验证此参数的正确性后再解密。验证步骤:

1.企业计算签名:dev_msg_signature=sha1(sort(token、timestamp、nonce、msg_encrypt))。sort的含义是将参数按照字母字典排序,然后从小到大拼接成一个字符串

2.比较dev_msg_signature和msg_signature是否相等,相等则表示验证通过

在被动响应消息时,企业同样需要用如上方法生成签名并传给微信

加解密方案说明

对明文msg加密的过程如下:

msg_encrypt = Base64_Encode( AES_Encrypt[random(16B) + msg_len(4B) + msg + $CorpID] )

AES加密的buf由16个字节的随机字符串、4个字节的msg长度、明文msg和$CorpID组成。其中msg_len为msg的字节数,网络字节序;$CorpID为企业号的CorpID。经AESKey加密后,再进行Base64编码,即获得密文msg_encrypt。

对应于加密方案,解密方案如下:

1.对密文BASE64解码:aes_msg=Base64_Decode(msg_encrypt)

2.使用AESKey做AES解密:rand_msg=AES_Decrypt(aes_msg)

3.验证解密后$CorpID、msg_len

4.去掉rand_msg头部的16个随机字节,4个字节的msg_len,和尾部的$CorpID即为最终的消息体原文msg

企业微信加密消息体_加解密方案的详细说明相关推荐

  1. 企业微信加密消息体_加解密方案说明

    [TOC] 概述 企业微信在推送消息给企业时,会对消息内容做AES加密,以XML格式POST到企业应用的URL上. 企业在被动响应时,也需要对数据加密,以XML格式返回给企业微信. 本章节即是对加解密 ...

  2. 企业微信加密消息体_微信企业号开发之加密方案与全局返回码说明

    本文包含了企业号回调企业时加解密的详细方案.库和示例代码的下载,以及企业号api接口返回的错误码. 一.关于加解密方案的详细说明 1.术语及说明 开启回调模式时,有以下术语需要了解: 1)msg_si ...

  3. 企业微信加密消息体_微信公众平台开发者中心安全模式消息体加解密实现

    关键字:微信公众平台 消息体签名 消息体加解密 EncodingAESKey 安全模式 一.消息体加解密 微信公众平台在配置服务器时,提供了3种加解密的模式供开发者选择,即明文模式.兼容模式.安全模式 ...

  4. 企业微信加密消息体_企业微信机器人怎么发消息?企业微信机器人可以定时发消息吗?...

    企业微信外部群自带群机器人功能,可以协助员工高效管理社群,帮助我们运营客户,那么企业微信机器人怎么用呢? 使用企业微信机器人,需要管理员先进入企业微信管理后台,在[客户联系]-[效率工具]-[自动回复 ...

  5. 企业微信加密消息体_无代码开发能保障企业系统数据的安全吗?这篇文章为你全面解析!...

    轻流<无代码开发白皮书>是从五年来的行业探索经验出发,对比研究了管理软件不同开发方式的优劣,总结了管理软件未来的发展趋势,并率先对无代码开发理念进行系统性阐述:详细解读了无代码开发广阔的应 ...

  6. 企业微信加密消息体_用企业微信小程序发送消息

    在企业开发中,经常会碰到一些消息要及时推送到企业员工的手中.so 下面来说怎么向企业微信中的员工发消息. 本人只是记录下开发过程,详细参考https://work.weixin.qq.com/api/ ...

  7. 企业微信推送消息延迟_一种基于企业微信的消息推送方法与流程

    本发明涉及消息推送技术领域,特别涉及一种基于企业微信的消息推送方法. 背景技术: 随着微信公众号的普及,微信企业号也越来越受到人们的关注.而腾讯公司在微信企业号的基础上又进行了进一步的升级,提供了类似 ...

  8. 企业微信 接收消息服务器,接收消息与事件

    [TOC] 关于接收消息 为了能够让自建应用和企业微信进行双向通信,企业可以在应用的管理后台开启接收消息模式. 开启接收消息模式的企业,需要提供可用的接收消息服务器URL. 开启接收消息模式后,用户在 ...

  9. 企业微信发送消息--Python

    企业微信内部消息推送--Python 我有一些自动化任务,这些自动化任务的执行结果,是成功和失败都是通过邮件发送的.但是邮件这个工具,有点正式,毕竟我只想一个通知.那有没有方法可以用微信接受通知呢? ...

最新文章

  1. getbytes方法_关于C#中识别和查找中英文字符串的解决方法和字符串处理方式的笔记...
  2. 复旦陈静静 | 把握当下,坚持热爱,与食物图像识别结缘的科研之路
  3. 一个不错的android学习网站
  4. 记一次意外的自定义控件
  5. svn版本信息自动更新到源代码
  6. 原:开辟内存时,可以以结构体为单位,这样测试,是对的吧?
  7. 零窗口探测怎么抓包_超低暗电流高性能近红外硅基光电探测器研究获进展
  8. 基于jQuery8款超赞的评分插件
  9. 队列服务(Queue)
  10. 2018年蓝桥杯省赛 明码
  11. office2003word解除安全模式启动
  12. iOS开发打包上传报错ERROR ITMS-90096
  13. Python爬虫教程(一):爬虫
  14. defineProps
  15. 1.30.Flink SQL案例将Kafka数据写入hive
  16. 京东云对话Cloudflare:畅谈更懂产业的云与未来科技趋势
  17. Python之图片转PDF
  18. python解锁电脑屏幕_怎样解除电脑屏幕锁定_教你解除电脑屏幕锁定的方法-系统城...
  19. 4g网络什么时候淘汰_5G时代来临后,4G真的会被淘汰吗,简单说一下
  20. 在多个项目聚合时,指定packing为pom

热门文章

  1. mysql多表查询sql优化_SQL多表查询优化
  2. 2021-10-18组会记录
  3. visio中形状如何链接到形状
  4. 理性看待下一代防火墙
  5. 5 款(必备)开发人员生产力工具
  6. linux 防火墙管理-firewalld
  7. Tomcat修改JDK配置
  8. 项目监控之Spring Boot 监控端点 Actuator 入门
  9. Cartoon CG:卡通渲染(tone-based-shading)
  10. 请相信我,这门编程语言丝毫不比C/C++差!