C# RSA

RSA加解密

using System.Security.Cryptography;

    private void button18_Click(object sender, EventArgs e)//RSA加密
        {
            bool RSA_Mode = radioButton13.Checked;                      //填充方式true 为oaep false为pkcs#1 1.5
            string RSA_Message = richTextBox15.Text;
            richTextBox12.Text = "";
            byte[] source = Encoding.Default.GetBytes(RSA_Message);      //明文转换为byte
            byte[] ciphertext;                                           //密文byte数组
            string publickey = richTextBox17.Text;                       //string密钥
            RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
            try
            {
                rsa.FromXmlString(publickey);                                //导入string密钥
                ciphertext = rsa.Encrypt(source , RSA_Mode);                       //加密
                StringBuilder sb = new StringBuilder();
                foreach (byte b in ciphertext)
                {
                    sb.AppendFormat("{0:X2}", b);
                }
                richTextBox12.Text = sb.ToString();

            }
            catch { MessageBox.Show("加密失败,请检查密钥"); }
        }

    }

RSA加密

private void button17_Click(object sender, EventArgs e)//RSA解密
        {
            bool RSA_Mode = radioButton13.Checked;
            string RSA_Ciphertext = richTextBox12.Text;
            richTextBox15.Text = "";
            string privatekey = richTextBox16.Text;
            byte[] ciphertext = new byte[RSA_Ciphertext.Length / 2];
            try
            {
                for (int x = 0; x < RSA_Ciphertext.Length / 2; x++)
                {
                    int i = (Convert.ToInt32(RSA_Ciphertext.Substring(x * 2, 2), 16));
                    ciphertext[x] = (byte)i;
                }
            }
            catch { MessageBox.Show("密文不正确!"); }
            byte[] source;    //原文byte数组
            RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
            try
            {
                rsa.FromXmlString(privatekey);                          //设置私钥
                source = rsa.Decrypt(ciphertext, RSA_Mode);                    //解密,得到byte数组
                richTextBox15.Text = Encoding.Default.GetString(source);    //返回结果
            }
            catch { MessageBox.Show("密钥不正确"); }

        }

RSA解密

c#中RSA密钥不是数字,是XML格式的密钥

是用特殊的BASE64加密的

http://www.cnblogs.com/midea0978/archive/2007/05/22/755826.html

C#默认公钥是65537也就是AQAB,不知道怎么改掉

时间: 2024-11-25 20:32:34

C# RSA的相关文章

python实现网页登录时的rsa加密流程

对某些网站的登录包进行抓包时发现,客户端对用户名进行了加密,然后传给服务器进行校验. 使用chrome调试功能断点调试,发现网站用javascript对用户名做了rsa加密. 为了实现网站的自动登录,需要模拟这个加密过程. 网上搜了下关于rsa加密的最简明的解释: rsa加密是非对称加密算法,该算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥,即公钥,而两个大素数组合成私钥.公钥是可发布的供任何人使用,私钥则为自己

RSA加密算法

1 import java.io.File; 2 import java.io.FileInputStream; 3 import java.io.FileOutputStream; 4 import java.io.ObjectInputStream; 5 import java.io.ObjectOutputStream; 6 import java.math.BigInteger; 7 import java.security.InvalidParameterException; 8 im

MD5加密和RSA加密

1.MD5加密  MD5(单向散列算法)的全称是Message-Digest Algorithm 5(信息-摘要算法),MD5算法的使用不需要支付任何版权费用. MD5的功能:     ①.输入任意长度的信息,经过处理,输出为128位的信息(数字指纹):    ②.不同的输入得到的不同的结果(唯一性):    ③.根据128位的输出结果不可能反推出输入的信息(不可逆),也就是只能加密,不能解密:  MD5的用途:     1.防止被篡改:    1)比如发送一个电子文档,发送前,我先得到MD5的

java RSA签名

try{ //1初始化秘钥 KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA"); keyPairGenerator.initialize(512); KeyPair keyPair = keyPairGenerator.generateKeyPair(); RSAPublicKey rsaPublicKey = (RSAPublicKey)keyPair.getPublic(); RSAPriv

JDK自带方法实现RSA数字签名

JDK只支持MD2withRSA, MD5withRSA, SHA1withRSA 其他的如SHA512withRSA需要第三方包支持,如BC(bouncy castle) JDK的密钥长度默认仍是1024 1 package jdbc.pro.lin; 2 3 import java.security.InvalidKeyException; 4 import java.security.NoSuchAlgorithmException; 5 import java.security.Priv

springmvc使用RSA算法加密表单

今天被吐槽在客户端用js对密码进行md5加密其实也不见得安全.这种做法其实不见得有什么作用,学过计算机网络都知道,在网上抓一个包是很简单的事,就算别人抓包抓不到你原始密码,用这个md5后的密码一样可以模拟登录系统.这样做无非就是直接通过登录页没法直接输入用户名密码,但用个程序模拟登陆也不是什么太难的事情.以前一直写那么多,一直没有注意,直到今天被吐槽,才发现以前自己的做法是多么的幼稚. 加密数据的方式当然不止一种,也可以通过https加密数据,但是对于一般应用来说,还需要花钱拿去给那些认证机构签

linux中ssh登录Permanently added (RSA) to the list of known hosts问题解决

文章出自http://www.2cto.com/os/201307/227199.html 用用户名+密码的方式登录出现以下问题: 1 [[email protected]]# ssh [email protected] 2 The authenticity of host 'xxx.xxx.xxx.xxx can't be established. 3 RSA key fingerprint is f4:d0:1a:9c:09:65:78:71:25:33:79:c2:d5:aa:0b:c1.

RSA加密异常

在利用RSA进行数据加密时,出现如下异常: Exception in thread "main" javax.crypto.IllegalBlockSizeException: Data must not be longer than 117 bytes at com.sun.crypto.provider.RSACipher.a(DashoA13*..) at com.sun.crypto.provider.RSACipher.engineDoFinal(DashoA13*..) a

RSA简介(一)——数论原理

RSA是最常用的非对称加密算法. 所谓非对称加密,就是说有两个密钥,一个密钥加密只可以用另外一个密钥解密,一般一个作为公钥,公开给所有人用来加密用,而另一个用来解密其他拥有公钥的加密结果,叫做私钥.另外,拥有私钥者可以用私钥加密信息,公钥可以解密获得加密内容,从而验证私钥拥有者的身份,这是一种特殊的加密,叫签名. RSA涉及到5个整数,关系如下: p和q都是质数: N=p*q; 找一个1<e1<(p-1)(q-1),使得e1与(p-1)(q-1)互质:(互质的意思是两个数的最小公约数为1) 再

C/C++使用openssl进行摘要和加密解密(md5, sha256, des, rsa)

openssl里面有很多用于摘要哈希.加密解密的算法,方便集成于工程项目,被广泛应用于网络报文中的安全传输和认证.下面以md5,sha256,des,rsa几个典型的api简单使用作为例子. 算法介绍 md5:https://en.wikipedia.org/wiki/MD5 sha256:https://en.wikipedia.org/wiki/SHA-2 des: https://en.wikipedia.org/wiki/Data_Encryption_Standard rsa: htt