![](/img/trans.png)
[英]How do I decode a base64 encoded string containing an XML document that contains characters with accents (á,é,í,ó,ú) in C#?
[英]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.