如何在Go语言中实现带PKCS1填充的SHA256 RSA签名与验签?
请求签名规则
- 签名:向服务提供方(Provider)发送的每一次请求,都必须将Request字段的信息转换为JSON字符串,再使用我方持有的私钥文件进行签名。
- 采用RSA算法,密钥长度需设置为2048位。
- 私钥由我方留存,公钥文件发送给服务提供方,密钥长度为2048位。
- 生成签名时,哈希算法设置为SHA256,填充方式为PKCS1。
- 服务提供方收到请求后,需使用请求方的公钥对请求字符串进行签名验证。
- sign字段的值为Request字段数据的字符串形式。
- 服务提供方(Provider)指使用我方服务的机构。
C#示例代码
public string Sign(string content) { using(var rsa = new RSACryptoServiceProvider(2048)) { var rsaParameters = Common.Extensions.LoadFromXmlFile(@"D:\Projects\iva-toll-service\Key\private.xml"); rsa.ImportParameters(rsaParameters); var dataBytes = Encoding.UTF8.GetBytes(content); var signBytes = rsa.SignData(dataBytes, HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1); var response = Convert.ToBase64String(signBytes); return response; } }
内容的提问来源于stack exchange,提问作者ehsan davari
相关产品推荐
相关产品推荐

