企业微信的Rust加解密算法

企业微信官方提供了多种语言的加解密SDK可以直接使用,包括C++、Python、Java、Go等,唯独没有Rust。不过好在提供了加解密原理,我们可以自行使用Rust实现。

企业微信的Rust加解密算法

最近在用Rust开发企业微信内部应用。按照官方文档,企业微信服务器所发送的数据全部为加密后数据,使用前需要先解密。同理,发送给企业微信服务器的数据也需要先加密。目前,官方提供了多种语言的加解密SDK可以直接使用,包括C++、Python、Java、Go等,唯独没有Rust。不过好在提供了加解密原理,我们可以自行使用Rust实现。

在实际编写中,几个比较重要的坑要注意:

  1. 企业微信的BASE64编码有自己的特殊要求。
  2. 请求数据的哈希校验使用的是SHA1。

接下来我们按照文档原理,依次实现以下三个功能:

  1. 签名生成。用于验证请求来源是否为企业微信服务器。
  2. 明文加密。将明文字符串加密为密文。
  3. 密文解密。将密文解密为明文字符串。