繁体   English   中英

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

[英]How do I decode a BASE64, PCKS-8 representation of a private key in .net?

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

从他们的指示:

通过以下方式签署此数据的字节数组表示:

解码Base 64,私钥的PKCS-8表示。 请注意,密钥使用PKCS-8编码。 各种语言的库提供了指定密钥采用这种格式而不是其他冲突格式(如PKCS-1)的能力。 使用密钥的此字节表示形式,使用带有RSA的SHA-256对数据进行签名。 使用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;
        }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM