【发布时间】:2017-05-07 17:21:14
【问题描述】:
我有一个 PEM 文件,其中包含我的 DSA 私钥,我需要使用此私钥签署一个字符串,以将其发送到我的合作伙伴 API。 (附代码)
出于某种原因,我总是从我的合作伙伴 API 收到签名无效。这意味着该标志的格式不正确。
我的合作伙伴让我在 c# 中使用 bouncycastle,但我找不到任何关于如何从外部 PEM 文件中使用 DSA 对字符串进行签名的示例。
我可以在这里找到任何例子吗?
谢谢。
我尝试使用我编写的方法对字符串进行签名:
public string ComputeSignature(string method, string path,string client_id, string timestamp, string username)
{
var data = String.Concat(method, path, client_id, timestamp);
if (!string.IsNullOrEmpty(username))
{
data = data + username;
}
string sig;
var encoding = new ASCIIEncoding();
byte[] dataInBytes = encoding.GetBytes(data);
using (System.Security.Cryptography.HMAC Hmac = new HMACSHA1())
{
Hmac.Key = encoding.GetBytes(privateKeyClean);
byte[] hash = Hmac.ComputeHash(dataInBytes, 0, dataInBytes.Length);
sig = Convert.ToBase64String(hash, 0, hash.Length);
}
return sig;
}
【问题讨论】:
标签: c# bouncycastle sha1 pem dsa