国产aaa免费视频国产,日韩一区二区不卡中文字幕,日产精品一二三四区国产,69频道,精品亚洲成a人片在线观看,伊人福利视频,欧美线在线精品观看视频

威勢網(wǎng)絡(luò),為您的企業(yè)和團(tuán)隊(duì)注入互聯(lián)網(wǎng)活力!
服務(wù)熱線:138-9741-0341

【原創(chuàng)】RSA簽名測試工具,含源碼下載

發(fā)布日期:2022/11/17 作者: 瀏覽:897

    很簡單的一個(gè)小工具,可以用來對數(shù)據(jù)進(jìn)行RSA加密簽名操作,以防止數(shù)據(jù)被第三方篡改。

    如上圖所示,在待簽數(shù)據(jù)中輸入要簽名的文本,然后點(diǎn)擊簽名按鈕,即可生成簽名數(shù)據(jù),默認(rèn)簽名是byte[]形式,這里進(jìn)行了base64轉(zhuǎn)碼,以方便顯示。點(diǎn)擊驗(yàn)簽,如下圖所示

   如果我們隨便改動(dòng)一下原文的數(shù)據(jù),比如加一個(gè)空格,或是刪除一個(gè)回車,再次點(diǎn)擊驗(yàn)簽按鈕,則會(huì)返回失敗提示。源碼如下:


using System.Security.Cryptography;
using System.Text;

namespace RSASignature
{
    public partial class Form1 : Form
    {
        private string PubKeyXml="";//公鑰,在加簽時(shí)生成,可以發(fā)送給客戶驗(yàn)驗(yàn)
        public Form1()
        {
            InitializeComponent();
        }

        private void bt_signa_Click(object sender, EventArgs e)
        {
            try
            {
                //獲取消息,追加簽名
                string message = this.tb_data.Text;
                var converter = new ASCIIEncoding();
                byte[] plainText = converter.GetBytes(message);

                var rsaWrite = new RSACryptoServiceProvider();
                //生成私鑰,這個(gè)不能發(fā)給客戶
                //var privateParams = rsaWrite.ExportParameters(true);

                //生成的公鑰,可以發(fā)送給客戶
                //var publicParams = rsaWrite.ExportParameters(false);
                PubKeyXml = rsaWrite.ToXmlString(false);
                //簽名
                byte[] signature = rsaWrite.SignData(plainText, SHA1.Create());
                this.tb_signatrue.Text=Convert.ToBase64String(signature); 
                var ttemp=Convert.FromBase64String(this.tb_signatrue.Text);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message+ex.InnerException?.Message);
            }
        }

        private void bt_vert_Click(object sender, EventArgs e)
        {
            try
            {
                string message = this.tb_data.Text;
                if (CheckSignatrue(message,Convert.FromBase64String(this.tb_signatrue.Text), PubKeyXml))
                {
                    MessageBox.Show("簽名校驗(yàn)通過!");
                }
                else
                {
                    MessageBox.Show("簽名有誤!");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message+ex.InnerException?.Message);
            }
        }
        private bool CheckSignatrue(string data, byte[] signature, RSAParameters PublicParameters)
        {
            try
            {
                var converter = new ASCIIEncoding();
                byte[] plainText = converter.GetBytes(data);
                var rsaRead = new RSACryptoServiceProvider();
                rsaRead.ImportParameters(PublicParameters);
                if (rsaRead.VerifyData(plainText, SHA1.Create(), signature))
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
        private bool CheckSignatrue(string data, byte[] signature, string publicKey)
        {
            try
            {
                var converter = new ASCIIEncoding();
                byte[] plainText = converter.GetBytes(data);
                var rsaRead = new RSACryptoServiceProvider();
                rsaRead.FromXmlString(publicKey);
                if (rsaRead.VerifyData(plainText, SHA1.Create(), signature))
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
    }
}


RSA簽名小工具及其源碼下載


下拉加載更多評論
最新評論
暫無!