• 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 将接收方的公钥告诉给发送方。

  • 相关阅读:
    Java数据类型转换
    github的入门使用
    移动端的头部标签和meta
    gulp&gulp-less
    前端工程筹建NodeJs+gulp+bower
    jQuery 遍历
    JavaScript for...in 语句
    console.log在线调试
    sessionStorage html5客户端本地存储之sessionStorage及storage事件
    一个页面从输入url到加载完成的过程都发生了什么,请详细说明
  • 原文地址:https://www.cnblogs.com/ghfsusan/p/1613568.html
Copyright © 2020-2023  润新知