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

如何在.net中解码私钥的BASE64、PCKS-8表示形式?,.net,authentication,encryption,.net,Authentication,Encryption,我正在努力将我的应用程序与沃尔玛市场API集成。他们的文档说,如果你不使用Java,你就只能靠自己了。我的应用程序使用VB.Net,但我愿意用任何.Net语言实现它 根据他们的指示: 通过以下方式对此数据的字节数组表示形式进行签名: 解码私钥的Base 64、PKCS-8表示形式。注 密钥是使用PKCS-8编码的。各种语言的图书馆 提供指定密钥采用此格式而不是默认格式的功能 其他冲突格式,如PKCS-1。使用这个字节表示 使用SHA-256和RSA对数据进行签名。编码 使用基64生成的签名 在这

我正在努力将我的应用程序与沃尔玛市场API集成。他们的文档说,如果你不使用Java,你就只能靠自己了。我的应用程序使用VB.Net,但我愿意用任何.Net语言实现它

根据他们的指示:

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

解码私钥的Base 64、PKCS-8表示形式。注 密钥是使用PKCS-8编码的。各种语言的图书馆 提供指定密钥采用此格式而不是默认格式的功能 其他冲突格式,如PKCS-1。使用这个字节表示 使用SHA-256和RSA对数据进行签名。编码 使用基64生成的签名

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

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

我使用c#.net 4.6时,它对我很有效


NuGet.org上的Bouncy Castle未编译,RSACng的构造函数无效。
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;
        }