最近一直在和其他系统做对接,对接方式无非就是调别人的接口。按照别人甩来的文档,准备参数调用接口,获取返回数据。其中有些接口的方法是需要身份认证的,一般做法先去验证身份,合法用户获取到token,以后每次调用接口带着token走即可。
大致流程如下
graph TD A[客户端发送用户名密码] --> B[服务器端接收并验证] --> C{是否合法用户} C -- 是 --> D[返回token给客户端] C --否 --> A D --> E[客户端携带token请求其他接口] E --> F[服务器端验证token并处理请求]
但是对接方api存在两个版本,旧版本并未实现身份认证,所有通信内容采用RSA的公钥进行加密,对方用私钥解密。公钥为pem格式,C#实现RSA加密只支持xml格式,所以有一下程序供测试。
1 | static void Main(string[] args) |
1 | /// <summary> |
Nuget中安装包:Portable.BouncyCastle,程序中添加如下引用,
1 | using Org.BouncyCastle.Crypto.Parameters; |
PEM格式公钥,以-----BEGIN PUBLIC KEY-----
开始,-----END PUBLIC KEY-----
结束
1 | -----BEGIN PUBLIC KEY----- |
xml格式公钥
1 | <RSAKeyValue> |
C#的RSA加密只实现了公钥加密、私钥解密。而并没有私钥加密,公钥解密的实现。
- 本文作者: 达文西
- 本文链接: https://edsiongithub.github.io/2021/11/08/23/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!