是否有内置程序使用.net中的客户端SSL私钥对HTTPS请求进行数字签名?此外,是否有内置程序来验证SSL证书的数字签名?或者我必须自己动手?或者是否有第三方图书馆?
我要签名的数据是普通的HTTP表单请求。例如,我提供此地址以扣除卡的余额:
https://myserver/deduction
客户端会将HTTP表单发布到该地址,其中包含card = 1234567890123456,currency = 1,amount = 1000等数据。此数据是我希望客户签名的数据。
我需要对请求进行数字签名,因为客户端操纵资金,所以我想确保请求真的来自客户端并且没有人篡改请求的内容。
我也在考虑使用SSL客户端证书,但它只能提供机密性和身份验证,但不能提供数据完整性。
答案 0 :(得分:1)
这里似乎有一个完整的示例代码如何在C#中进行基本的数字签名实现http://tutorial.visualstudioteamsystem.com/details.aspx?item=134
var MySigner = new DSACryptoServiceProvider();
string publicKey;
using (var file = new FileStream(args[0], FileMode.Open, FileAccess.Read))
{
using (var reader = new BinaryReader(file))
{
var data = reader.ReadBytes((int)file.Length);
var signature = MySigner.SignData(data);
publicKey = MySigner.ToXmlString(false);
Console.WriteLine("Signature: " + Convert.ToBase64String(signature));
}
}
var verifier = new DSACryptoServiceProvider();
verifier.FromXmlString(publicKey);
using (var file = new FileStream(args[0], FileMode.Open, FileAccess.Read))
{
using (var reader = new BinaryReader(file))
{
byte[] data = reader.ReadBytes((int)file .Length);
if (verifier.VerifyData(data, signature))
Console.WriteLine("Signature");
else
Console.WriteLine("Signature is not verified");
}
}