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

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

2009-09-10 13:46:17|  分类: ASP.NET/C# |  标签: |字号 订阅

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

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

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

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

以下为引用的内容: ///     /// 生成签名    ///     ///     ///     protected void Button1_Click(object sender, EventArgs e)    {        DSACryptoServiceProvider objdsa = new DSACryptoServiceProvider();        objdsa.FromXmlString(tbxKey.Text);        byte[] source = System.Text.UTF8Encoding.UTF8.GetBytes(tbxContent.Text);        //数字签名         tbxSign.Text = BitConverter.ToString(objdsa.SignData(source));     }    ///     /// 随机生成密钥    ///     ///     ///     protected void btncreateMY_Click(object sender, EventArgs e)    {        DSACryptoServiceProvider objdsa = new DSACryptoServiceProvider();        tbxcreateMY_publicKey.Text = objdsa.ToXmlString(false);        tbxcreateMY_key.Text = objdsa.ToXmlString(true);    }    ///     /// 验证签名    ///     ///     ///     protected void Button3_Click(object sender, EventArgs e)    {        DSACryptoServiceProvider objdsa = new DSACryptoServiceProvider();        byte[] fileHashValue = new SHA1CryptoServiceProvider().ComputeHash(System.Text.UTF8Encoding.UTF8.GetBytes(tbxContentYZ.Text));               string[] strSplit = tbxSignYZ.Text.Split('-');        byte[] SignedHash = new byte[strSplit.Length];        for (int i = 0; i < strSplit.Length; i++)            SignedHash[i] = byte.Parse(strSplit[i], System.Globalization.NumberStyles.AllowHexSpecifier);        objdsa.FromXmlString(tbxPublickeyYZ.Text);        bool ret = objdsa.VerifySignature(fileHashValue, SignedHash);        Qcd.Core.Web.Messages.ShowDialog(ret.ToString());    }
 
 
 
    html页面代码:  <form id="form1" runat="server">        随机生成密钥:<asp:Button ID="btncreateMY" runat="server" Text="随机生成密钥" OnClick="btncreateMY_Click" /><br />        公钥:<asp:TextBox ID="tbxcreateMY_publicKey" runat="server" TextMode="MultiLine" Height="59px" ReadOnly="True" Width="711px"></asp:TextBox><br />        私钥:<asp:TextBox ID="tbxcreateMY_key" runat="server" TextMode="MultiLine" Height="59px" ReadOnly="True" Width="710px"></asp:TextBox><br /><hr />        <br />        生成签名:<br />        原文:&nbsp;        <asp:TextBox ID="tbxContent" runat="server" TextMode="MultiLine" Height="59px" Width="711px"></asp:TextBox>&nbsp;<br />        私钥:        <asp:TextBox ID="tbxKey" runat="server" TextMode="MultiLine" Height="59px" Width="711px"></asp:TextBox><br />        签名:        <asp:TextBox ID="tbxSign" runat="server" TextMode="MultiLine" Height="59px" ReadOnly="True" Width="711px"></asp:TextBox>        <br />        <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="生成签名" />        <br />        <br /><hr />        <br />        验证签名:<br />        原文:<asp:TextBox ID="tbxContentYZ" runat="server" TextMode="MultiLine" Height="59px" Width="711px"></asp:TextBox><br />        公钥:<asp:TextBox ID="tbxPublickeyYZ" runat="server" TextMode="MultiLine" Height="59px" Width="711px"></asp:TextBox><br />        签名:<asp:TextBox ID="tbxSignYZ" runat="server" TextMode="MultiLine" Height="59px" Width="711px"></asp:TextBox>        <br />                <asp:Button ID="Button3" runat="server" OnClick="Button3_Click" Text="验证签名" />    </form> 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值