zoukankan      html  css  js  c++  java
  • C# 加密-RSA

    RSA 实际应用中是:接收方产生公钥和私钥,发送方用其公钥加密,再把加密后的内容发送给接收方。

    CspParameters 的名称空间是:

    System.Security.Cryptography
    CspParameters cpSend = new CspParameters(); //Csp = Cryptography Service Provider
    CspParameters cpReceive = new CspParameters();
    cpSend.KeyContainerName = "SendTestContainer";
    cpReceive.KeyContainerName = "ReceiveTestContainer";
    
    RSACryptoServiceProvider rsaSend = new RSACryptoServiceProvider(cpSend); ;
    RSACryptoServiceProvider rsaReceive = new RSACryptoServiceProvider(cpReceive);
    
    rsaSend.FromXmlString(rsaReceive.ToXmlString(false)); //发送方使用接收方给它的公钥进行加密
    
    string plaintext = "前几天我碰到一个朋友,约我跟马贼打架,我立马答应了他,因为我觉得这件事好无聊。";
    byte[] ciphertext = rsaSend.Encrypt(System.Text.Encoding.UTF8.GetBytes(plaintext), false); //加密后
    byte[] decryption = rsaReceive.Decrypt(ciphertext, false); //解密后
    
    lbl.Width = 760;
    lbl.Text = "";
    lbl.Text += Convert.ToBase64String(ciphertext) + "<br />"; //显示加密后的
    lbl.Text += System.Text.Encoding.UTF8.GetString(decryption) + "<br />"; //显示解密后的
    lbl.Text += Server.HtmlEncode(rsaSend.ToXmlString(false)) + "<br />"; //显示发送方公钥
    lbl.Text += Server.HtmlEncode(rsaReceive.ToXmlString(true)) + "<br />"; //显示接收方公钥和私钥
    lbl.Text += Server.HtmlEncode(rsaReceive.ToXmlString(false)) + "<br />";  //显示接收方公钥
    
    rsaSend.PersistKeyInCsp = true; //密钥要保存起来
    //rsaSend.Clear();
    rsaReceive.PersistKeyInCsp = true;
    //rsaReceive.Clear();

    在上面的代码中,我们使用 CspParameters 将密钥保存起来,ToXmlStringFromXmlString 将接收方的公钥告诉给发送方。

  • 相关阅读:
    用JS 对JSON 进行“增/改/删”
    工作中发现html label标签的一些特性
    jquery validate插件 验证函数扩展
    jquery live()函数原理及实现
    关于IE背景图片显示100%(背景图片自动伸缩 自适应)
    二维数组排序
    Javascript for循环的疑惑
    JS 输入银行卡号,4位自动加空格
    form提交后reset功能失效
    IE6不支持position:fixed的解决方法
  • 原文地址:https://www.cnblogs.com/ghfsusan/p/1613568.html
Copyright © 2011-2022 走看看