RSA的签名认证实现

来源:互联网 发布:java enum 单例 编辑:程序博客网 时间:2024/05/21 06:50

大致代码如下:

 

FileStream objFile = File.OpenRead("test.txt");
HashAlgorithm md5 = HashAlgorithm.Create("MD5");
byte[] hashData = md5.ComputeHash(objFile);
Console.WriteLine(Convert.ToBase64String(hashData.ToArray()));

RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();
RSAPKCS1SignatureFormatter RSAFormatter = new RSAPKCS1SignatureFormatter(RSA);

RSAFormatter.SetHashAlgorithm("MD5");
byte[] signEncryptedData = RSAFormatter.CreateSignature(hashData);

string strCode = "";
//现实加密结果
for(int i = 0; i < signEncryptedData.Length; i++)
{
    strCode += " " + signEncryptedData[i].ToString();
}
Console.WriteLine(strCode);                                 


//解密认证

RSAPKCS1SignatureDeformatter RSADeformatter = new RSAPKCS1SignatureDeformatter(RSA);
//指定解密的时候HASH算法为MD5
RSADeformatter.SetHashAlgorithm("MD5");
if (RSADeformatter.VerifySignature(hashData, signEncryptedData))
{
    Console.WriteLine("确认");
}
else
{
    Console.WriteLine("NO");
}
原创粉丝点击