如何解码.net中私钥的BASE64、PCKS-8表示



我正在将我的应用程序与沃尔玛市场API集成。他们的文档几乎说,如果你不使用Java,你就只能靠自己了。我的应用程序使用VB.Net,但我对用任何.Net语言实现这一点持开放态度。

根据他们的指示:

通过以下方式对此数据的字节数组表示进行签名:

正在解码私钥的Base64、PKCS-8表示形式。笔记密钥是使用PKCS-8编码的。各种语言的图书馆提供指定密钥为这种格式而不是其他冲突格式,如PKCS-1。使用此字节表示使用SHA-256 With RSA对数据进行签名。对使用Base 64生成签名。

在这一点上,我被困在了第一部分。我不知道如何解码.net中的私钥。一旦我弄清楚了,我将进入签名请求的第二部分。

我的问题是,是否有任何代码片段或库可以帮助我做到这一点。一些使用任何库的示例代码也将不胜感激。

它适用于我使用c#.net 4.6

using System;
using System.Security.Cryptography;
public static string SignData(string stringToBeSigned, string encodedPrivateKey)
{
string signedData = string.Empty;
try
{
var decodeKey = Convert.FromBase64String(privateEncodedStr);
var key = CngKey.Import(decodeKey, CngKeyBlobFormat.Pkcs8PrivateBlob);
var alg = new RSACng(key);
byte[] data = Encoding.UTF8.GetBytes(stringToBeSigned);
byte[] signData = alg.SignData(data, HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1);
signedData = Convert.ToBase64String(signData);
}
catch (Exception)
{
throw;
}
return signedData;
}

最新更新