.NET中使用数字证书用RSA算法对数据进行加密和签名

RSA

这种算法1978年就出现了,它是第一个既能用于数据加密也能用于数字签名的算法。它易于理解和操作,也很流行。算法的名字以Ron Rivest, AdiShamir Leonard Adleman发明者的名字命名的。这种加密算法的特点主要是密钥的变化,在DES中只有一个密钥(对称加密)。相当于只有一把钥匙,如果这把钥匙丢了,数据也就不安全了。RSA同时有两把钥匙,公钥与私钥。

加密和解密:发送方利用接收方的公钥对要发送的明文进行加密,接受方利用自己的私钥进行解密,其中公钥和私钥匙相对的,任何一个作为公钥,则另一个就为私钥。用公钥加密,只有用私钥解开,私钥只有自己有,所以他保证了数据不能被别人看到。

签名和验证:发送方用特殊的hash算法,由明文中产生固定长度的摘要,然后利用自己的私钥对形成的摘要进行加密,这个过程就叫签名。接受方利用发送方的公钥解密被加密的摘要得到结果A,然后对明文也进行hash操作产生摘要B。最后把AB作比较。此方式可以保证发送方的身份不可抵赖以及保证数据在传输过程中不会被篡改。

  .Net中用来访问证书的对象是X509Certificate2,我们可以用它来加载一个数字证书并获得数字证书中的密钥。

如果证书是以文件的形式保存在本地的话,就可以参考以下提供的方法对数据进行加密/解密以及签名和验证:

具体实现方法为:

引入:

       using System.Security.Cryptography.X509Certificates; System.Security.Cryptography;

using

 

 

 

       using System.Security.Cryptography.X509Certificates;

using System.Security.Cryptography;

 

        /// <summary>

        /// 用公钥对数据加密

        /// </summary>

        /// <param name="message">需要加密的字符串</param>

        /// <returns></returns>

        public byte[] EncryptDataByPublicKey(string message)

        {

 

            //保存明文文件的字节数组

            Byte[] plainTextByte = Encoding.UTF8.GetBytes(message);

 

            //从只包含公钥的证书文件载入证书

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值