您的位置:首页 > 编程语言 > ASP

asp.net如何实现数字签名(DSACryptoServiceProvider)

2012-02-24 11:22 323 查看

asp.net如何实现数字签名(DSACryptoServiceProvider)

2009-09-1013:46:17|分类:

ASP.NET/C#|标签:
|字号大中小
订阅

数字签名简单的说过程如下:

发送者A向接受者B发送数据,A首先将数据进行散列函数运算,生成信息摘要,然后用私钥进行加密,生成签名信息,A将要发送的信息与签名信息一起发送给B,B接收到后,也将数据进行散列运行,并生成信息摘要,然后用公钥与签名进行验证核对信息是否被撰改。

asp.net实现数字签名实例代码:

需引入命名空间:usingSystem.Security.Cryptography;

以下为引用的内容://////生成签名/////////protectedvoidButton1_Click(objectsender,EventArgse){DSACryptoServiceProviderobjdsa=newDSACryptoServiceProvider();objdsa.FromXmlString(tbxKey.Text);byte[]source=System.Text.UTF8Encoding.UTF8.GetBytes(tbxContent.Text);//数字签名tbxSign.Text=BitConverter.ToString(objdsa.SignData(source));}//////随机生成密钥/////////protectedvoidbtncreateMY_Click(objectsender,EventArgse){DSACryptoServiceProviderobjdsa=newDSACryptoServiceProvider();tbxcreateMY_publicKey.Text=objdsa.ToXmlString(false);tbxcreateMY_key.Text=objdsa.ToXmlString(true);}//////验证签名/////////protectedvoidButton3_Click(objectsender,EventArgse){DSACryptoServiceProviderobjdsa=newDSACryptoServiceProvider();byte[]fileHashValue=newSHA1CryptoServiceProvider().ComputeHash(System.Text.UTF8Encoding.UTF8.GetBytes(tbxContentYZ.Text));string[]strSplit=tbxSignYZ.Text.Split('-');byte[]SignedHash=newbyte[strSplit.Length];for(inti=0;i<strSplit.Length;i++)SignedHash[i]=byte.Parse(strSplit[i],System.Globalization.NumberStyles.AllowHexSpecifier);objdsa.FromXmlString(tbxPublickeyYZ.Text);boolret=objdsa.VerifySignature(fileHashValue,SignedHash);Qcd.Core.Web.Messages.ShowDialog(ret.ToString());}



html页面代码:<formid="form1"runat="server">随机生成密钥:<asp:ButtonID="btncreateMY"runat="server"Text="随机生成密钥"OnClick="btncreateMY_Click"/><br/>公钥:<asp:TextBoxID="tbxcreateMY_publicKey"runat="server"TextMode="MultiLine"Height="59px"ReadOnly="True"Width="711px"></asp:TextBox><br/>私钥:<asp:TextBoxID="tbxcreateMY_key"runat="server"TextMode="MultiLine"Height="59px"ReadOnly="True"Width="710px"></asp:TextBox><br/><hr/><br/>生成签名:<br/>原文: <asp:TextBoxID="tbxContent"runat="server"TextMode="MultiLine"Height="59px"Width="711px"></asp:TextBox> <br/>私钥:<asp:TextBoxID="tbxKey"runat="server"TextMode="MultiLine"Height="59px"Width="711px"></asp:TextBox><br/>签名:<asp:TextBoxID="tbxSign"runat="server"TextMode="MultiLine"Height="59px"ReadOnly="True"Width="711px"></asp:TextBox><br/><asp:ButtonID="Button1"runat="server"OnClick="Button1_Click"Text="生成签名"/><br/><br/><hr/><br/>验证签名:<br/>原文:<asp:TextBoxID="tbxContentYZ"runat="server"TextMode="MultiLine"Height="59px"Width="711px"></asp:TextBox><br/>公钥:<asp:TextBoxID="tbxPublickeyYZ"runat="server"TextMode="MultiLine"Height="59px"Width="711px"></asp:TextBox><br/>签名:<asp:TextBoxID="tbxSignYZ"runat="server"TextMode="MultiLine"Height="59px"Width="711px"></asp:TextBox><br/><asp:ButtonID="Button3"runat="server"OnClick="Button3_Click"Text="验证签名"/></form>

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: