企业微信的Rust加解密算法
企业微信官方提供了多种语言的加解密SDK可以直接使用,包括C++、Python、Java、Go等,唯独没有Rust。不过好在提供了加解密原理,我们可以自行使用Rust实现。
最近在用Rust开发企业微信内部应用。按照官方文档,企业微信服务器所发送的数据全部为加密后数据,使用前需要先解密。同理,发送给企业微信服务器的数据也需要先加密。目前,官方提供了多种语言的加解密SDK可以直接使用,包括C++、Python、Java、Go等,唯独没有Rust。不过好在提供了加解密原理,我们可以自行使用Rust实现。
在实际编写中,几个比较重要的坑要注意:
- 企业微信的BASE64编码有自己的特殊要求。
- 请求数据的哈希校验使用的是SHA1。
接下来我们按照文档原理,依次实现以下三个功能:
- 签名生成。用于验证请求来源是否为企业微信服务器。
- 明文加密。将明文字符串加密为密文。
- 密文解密。将密文解密为明文字符串。