首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在BASE64中解码.net中私钥的PCKS-8表示?

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

Stack Overflow用户
提问于 2016-05-30 17:32:05
回答 1查看 1.8K关注 0票数 3

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

根据他们的指示:

通过以下方式对此数据的字节数组表示形式进行签名: 解码基地64,PKCS-8表示您的私钥。注意,密钥是使用PKCS-8编码的。各种语言的库提供了一种能力,可以指定键是这种格式的,而不是其他冲突的格式,例如PKCS-1。使用密钥的这个字节表示来使用RSA使用SHA-256对数据进行签名。使用Base 64对结果签名进行编码。

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

我的问题是,是否有任何代码片段或库可以帮助我解决这个问题。一些使用任何库的示例代码也将是非常感谢的。

EN

回答 1

Stack Overflow用户

发布于 2016-11-04 18:22:48

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

代码语言:javascript
复制
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;
        }
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37531044

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档