asp.net如何?數位簽章(DSACryptoServiceProvider)

來源:互聯網
上載者:User

數位簽章簡單的說過程如下:

寄件者A向接受者B發送資料,A首先將資料進行散列函數運算,產生資訊摘要,然後用私密金鑰進行加密,產生簽名資訊,A將要發送的資訊與簽名資訊一起發送給B,B接收到後,也將資料進行散列運行,並產生資訊摘要,然後用公開金鑰與簽名進行驗證核對資訊是否被撰改。

asp.net實現數位簽章執行個體代碼:

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

以下為引用的內容:
 /// <summary>
    /// 產生簽名
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    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));
    }

    /// <summary>
    /// 隨機產生密鑰
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void btncreateMY_Click(object sender, EventArgs e)
    {
        DSACryptoServiceProvider objdsa = new DSACryptoServiceProvider();
        tbxcreateMY_publicKey.Text = objdsa.ToXmlString(false);
        tbxcreateMY_key.Text = objdsa.ToXmlString(true);
    }

    /// <summary>
    /// 驗證簽名
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    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>

 

http://www.cn-web.com/shtml/article/net/quer/2009/07/28/921.shtml

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.