关键词:北京做网站 | 北京网站建设 | 北京便宜做网站 | 北京便宜做网站 | 24小时服务热线:010-56200798
  首 页  公司简介网站案例建站套餐行业新闻技术文档电脑知识建站流程域名主机联系我们
站内搜索:      [ 24小时服务热线:010-56200798 ]
【 asp.net如何实现Rsa加密 】 网站全部信息 我有问题要问站长

asp.net实现rsa加密代码:

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

.cs代码:

以下为引用的内容:
 /// <summary>
    /// 随机生成密钥对
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void btncreateMY_Click(object sender, EventArgs e)
    {
        RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
        tbxcreateMY_publicKey.Text = rsa.ToXmlString(false);
        tbxcreateMY_key.Text = rsa.ToXmlString(true);
    }

    /// <summary>
    /// 生成密文
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void Button1_Click(object sender, EventArgs e)
    {
        RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
        rsa.FromXmlString(tbxKey.Text);
        byte[] source = System.Text.UTF8Encoding.UTF8.GetBytes(tbxContent.Text);
        tbxSign.Text = Convert.ToBase64String(splitEncryptByte(source, rsa));
    }

    /// <summary>
    /// 进行解密
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void Button3_Click(object sender, EventArgs e)
    {
        RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
        rsa.FromXmlString(tbxPublickeyYZ.Text);

        byte[] source = Convert.FromBase64String(tbxContentYZ.Text);

        tbxSignYZ.Text = System.Text.UTF8Encoding.UTF8.GetString(splitDecryptByte(source,rsa));
    }

    /// <summary>
    /// 对原文进行分隔加密
    /// </summary>
    /// <param name="s"></param>
    /// <param name="rsa"></param>
    /// <returns></returns>
    private byte[] splitEncryptByte(byte[] s,RSACryptoServiceProvider rsa)
    {
        int templength = s.Length;//原始明文长度
        if (templength > 64)
        {
            //将原始明文扩展到64的整数倍
            int mod = templength % 64;//求余
            byte[] mbyte = new byte[templength + (64 - mod)];//扩展后的明文
            for (int i = 0; i < templength; i++)//前半部分拷贝进来
            {
                mbyte[i] = s[i];
            }
            for (int i = templength; i < mbyte.Length; i++)//后半部分都填空格 asc 32
            {
                mbyte[i] = 32;
            }

            //开始分割明文
            int div = mbyte.Length / 64;//每64个为一组对明文分组
            if ((mbyte.Length % 64) != 0) div += 1;
            byte[][] divbyte = new byte[div][];//存放分组明文
            for (int i = 0; i < div; i++)
            {
                divbyte[i] = new byte[64];//每一个分割都是64长度
                Array.Copy(mbyte, i * 64, divbyte[i], 0, 64);//拷贝到第i个分割数据中
            }

            byte[][] divencbyte = new byte[div][];//存放加密后的密文
            for (int i = 0; i < div; i++)
            {
                divencbyte[i] = new byte[128];
                divencbyte[i] = rsa.Encrypt(divbyte[i], false);
            }

            byte[] encbyte = new byte[div * 128];//拼装后的数组
            for (int i = 0; i < div; i++)
            {
                Array.Copy(divencbyte[i], 0, encbyte, 128 * i, 128);
            }
            return encbyte;
        }
        else
        {
            return rsa.Encrypt(s, false);
        }
      
    }

    /// <summary>
    /// 对密文进行分隔解密
    /// </summary>
    /// <param name="EncryptToData"></param>
    /// <param name="rsa"></param>
    /// <returns></returns>
    private byte[] splitDecryptByte(byte[] EncryptToData, RSACryptoServiceProvider rsa)
    {
        //分割密文
        int div = EncryptToData.Length / 128;//每128个为一组对密文分组
        if ((EncryptToData.Length % 128) != 0) div += 1;
        if (div > 1)
        {
            byte[][] divbyte = new byte[div][];//存放分组密文
            for (int i = 0; i < div; i++)
            {
                divbyte[i] = new byte[128];//每一个分割都是128长度
                Array.Copy(EncryptToData, i * 128, divbyte[i], 0, 128);//拷贝到第i个分割数据中
            }

            //开始解密
            byte[][] divdecbyte = new byte[div][];//存放解密后的明文
            for (int i = 0; i < div; i++)
            {
                divdecbyte[i] = new byte[64];
                divdecbyte[i] = rsa.Decrypt(divbyte[i], false);
            }
            //解密完毕
            //开始拼装
            byte[] decbyte = new byte[div * 64];//拼装后的数组
            for (int i = 0; i < div; i++)
            {
                Array.Copy(divdecbyte[i], 0, decbyte, 64 * i, 64);
            }
            //拼装完毕
            return decbyte;
        }
        else
        {
            return rsa.Decrypt(EncryptToData, false);
        }
    }
 


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>

 

【完】
  提问内容
网名:
提问:
 
关于我们 - 法律声明 - 友情链接 - 网站地图 - 人才招聘 - 网站纵览 - 付款方式
版权所有 北京飞腾网络 联系电话:010-56200798
Inc. All Rights Reserved