亚洲欧洲视频,三男玩一女摸吃奶,久久久久久久片,精品中文一区二区三区,美女在线国产,国产有码视频,亚洲激情五月

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

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

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

    很簡(jiǎn)單的一個(gè)小工具,可以用來對(duì)數(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簽名小工具及其源碼下載


下拉加載更多評(píng)論
最新評(píng)論
暫無!