我正在使用用 Java 开发的第三方 API。它需要使用给定的 RSA 私钥加密数据以生成签名。但是RSACryptoServiceProvider'C# 中的'只允许通过公钥加密。
到目前为止,我已经尝试使用“BouncyCastle”来使用私钥加密数据。但是 API 响应有错误。它说,'verify signature failed'。
热修复这个,有什么想法吗?
顺便说一句:我使用下面的代码将 Java 私钥转换为 C# xml 私钥。这正确吗?
RsaPrivateCrtKeyParameters privateKeyParam = (RsaPrivateCrtKeyParameters)PrivateKeyFactory.CreateKey(Convert.FromBase64String(priKey));
return string.Format("<RSAKeyValue><Modulus>{0}</Modulus><Exponent>{1}</Exponent><P>{2}</P><Q>{3}</Q><DP>{4}</DP><DQ>{5}</DQ><InverseQ>{6}</InverseQ><D>{7}</D></RSAKeyValue>",
Convert.ToBase64String(privateKeyParam.Modulus.ToByteArrayUnsigned()),
Convert.ToBase64String(privateKeyParam.PublicExponent.ToByteArrayUnsigned()),
Convert.ToBase64String(privateKeyParam.P.ToByteArrayUnsigned()),
Convert.ToBase64String(privateKeyParam.Q.ToByteArrayUnsigned()),
Convert.ToBase64String(privateKeyParam.DP.ToByteArrayUnsigned()),
Convert.ToBase64String(privateKeyParam.DQ.ToByteArrayUnsigned()),
Convert.ToBase64String(privateKeyParam.QInv.ToByteArrayUnsigned()),
Convert.ToBase64String(privateKeyParam.Exponent.ToByteArrayUnsigned()));
临摹微笑
一只名叫tom的猫
相关分类