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>
相关文章推荐
- ASP.NET Core中的依赖注入(5): ServiceProvider实现揭秘 【总体设计 】
- ASP.NET Core中的依赖注入(5): ServiceProvider实现揭秘 【解读ServiceCallSite 】
- 如何在ASP.NET中实现验证码?
- 如何在ASP.NET中实现验证码?
- 使用ASP.NET实现Windows Service定时执行任务
- 如何用SQLDMO在ASP.NET页面下实现数据库的备份与恢复
- [导入]如何使用 C# .NET 在 ASP.NET 应用程序中实现基于窗体的身份验证
- 如何在asp.net页面上放置的控件上实现左右键菜单,同时对之操作(2)
- 如何实现在Asp.net下XP风格的下拉菜单
- ASP.NET中如何实现FORM认证登录
- 如何实现ASP.NET网站个性化
- ASP.NET中如何实现FORM认证登录 (转载)
- 如何在ASP.NET中实现验证码?
- ASP.NET中如何实现回调
- 如何实现Asp与Asp.Net共享Session
- 如何使用 C# .NET 在 ASP.NET 应用程序中实现基于窗体的身份验证
- 在Asp.net中如何实现弹出提示对话框()
- 在ASP.NET中如何用C#.NET实现基于表单的验证
- 如何在asp.net中实现返回上一页的功能
- (原创)在 ASP.NET 中,如何巧用 HttpModule ,以实现系统全局登录逻辑判断,高手慎入