一区在线电影,国产在线首页,中文字幕精,天天爽天天射,夜色99,日韩国产成人av,伊人久久综合视频

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

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

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

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

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

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


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

namespace RSASignature
{
    public partial class Form1 : Form
    {
        private string PubKeyXml="";//公鑰,在加簽時生成,可以發(fā)送給客戶驗驗
        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();
                //生成私鑰,這個不能發(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("簽名校驗通過!");
                }
                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簽名小工具及其源碼下載


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