RSA加密的测试demo

使用.net自带的RSA,需要引用System.Security.Cryptography

测试环境.net4.6

static void Main(string[] args)
{
    var RSA = new RSACryptoServiceProvider();
    var publickKey = RSA.ToXmlString(false);
    var privateKey = RSA.ToXmlString(true);

    var publicKeyRSA = new RSACryptoServiceProvider();
    publicKeyRSA.FromXmlString(publickKey);

    var privateKeyRSA = new RSACryptoServiceProvider();
    privateKeyRSA.FromXmlString(privateKey);

    var encryptBytes = publicKeyRSA.Encrypt(Encoding.Default.GetBytes("hellow world"), false);

    string tmp = "";
    for (int i = 0; i < encryptBytes.Length; i++)
    {
        tmp += encryptBytes[i] + ",";
    }
    tmp = tmp.TrimEnd(‘,‘);
    Console.WriteLine(tmp);

    var sign = privateKeyRSA.SignData(encryptBytes, "SHA1");
    if (publicKeyRSA.VerifyData(encryptBytes, "SHA1", sign))
    {
        var decryptBytes = privateKeyRSA.Decrypt(encryptBytes, false);
        var str = Encoding.Default.GetString(decryptBytes);
        Console.WriteLine(str);
    }
    else
    {
        Console.WriteLine("Sign Error!");
    }

    Console.Read();
}

运行打印:

104,205,171,68,41,206,37,127,112,195,150,236,162,29,144,253,78,197,173,65,75,240
,223,35,186,212,218,50,24,60,144,133,174,97,74,90,61,97,97,54,214,231,30,191,33,
18,102,103,230,79,231,100,171,129,0,165,33,147,22,69,83,67,105,212,92,118,112,16
5,200,11,91,241,56,161,218,11,62,179,83,167,141,27,2,188,169,102,222,133,37,191,
41,48,246,90,238,164,105,54,238,126,6,140,74,197,208,164,197,209,98,68,243,160,1
65,66,64,223,234,175,160,5,24,198,169,206,110,100,235,6
hellow world
时间: 2024-08-09 23:55:17

RSA加密的测试demo的相关文章

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

java和php实现RSA加密互通-b

java和PHP RSA加密实现互通 1:通过openssl 生成公钥和密钥文件(linux) (1)  生产私钥文件命令 openssl genrsa -out rsa_private_key.pem 1024 生产结果 -----BEGIN PUBLIC KEY----- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCbrbo/JaPJTJLl+6hfZm7uuLIr t/hivaLfot32wq/nSzoSsYkoNk27Yy+n10ODoZ75/91Y8Q

RSA加密、解密、签名、验签 DSA签名、验签

重要的事情说三遍,该篇文章主要是验证JAVA的RSA签名.验签的测试代码,主要代码参考 http://xw-z1985.iteye.com/blog/1837376 重要的事情说三遍,该篇文章主要是验证JAVA的RSA签名.验签的测试代码,主要代码参考 http://xw-z1985.iteye.com/blog/1837376 重要的事情说三遍,该篇文章主要是验证JAVA的RSA签名.验签的测试代码,主要代码参考 http://xw-z1985.iteye.com/blog/1837376 下

一篇搞定RSA加密与SHA签名|与Java完全同步

看到这篇文章的同学可幸福了,当时在做RSA加密与签名的时候网上的资料简直不要太老,做完后实在是忍受不下去了,这篇文章我会详细讲解iOS如何实现RSA加密与签名,并且与Java完全同步,这是我的第二篇博客,若有什么不足之处还请大家指教. 基础知识 什么是RSA? 答:RSA是一种非对称加密算法,常用来对传输数据进行加密,配合上数字摘要算法,也可以进行文字签名. RSA加密中padding? 答:padding即填充方式,由于RSA加密算法中要加密的明文是要比模数小的,padding就是通过一些填充

C#实现RSA加密和解密详解

原文:C#实现RSA加密和解密详解 RSA加密解密源码: Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ -->using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Security.Cryptography;

Jmeter_前端RSA加密下的登陆模拟_引用js文件实现

在一次项目实战中,前端登录使用了RSA加密,使用LoadRunner压测的第一步,就是模拟用户登录,可惜loadRunner11并不能录制前端的加密过程,并且安装的LR是基于C语言版,网络上关于RSA的加密更多的是Java版,最后,选择在Jmeter中先尝试一下能否解决加密的问题,毕竟它有很多处理器,用于脚本的插入: 把解决过程中遇到的问题,简单做个记录,防止遗忘,也算是给自己下一次项目一个经验总结了: [1]了解加密方式-----RSA 询问开发前端的加密方式:先请求public_key,再加

RSA加密解密及RSA签名和验证及证书

公钥是给别人的 发送密文使用公钥加密 验证签名使用公钥验证 私钥是自己保留的 接受密文使用私钥解密 发送签名使用私钥签名 上述过程逆转是不行的,比如使用私钥加密,使用公钥解密是不行的 证书的制作参考自使用X.509数字证书加密解密实务(一)-- 证书的获得和管理 打开VS开发命令,输入下面的命令: makecert -sr CurrentUser -ss My -n CN=MyTestCert -sky exchange -pe 从证书中读取私钥和公钥: /// <summary> /// 根

React Native + Nodejs 使用RSA加密登录

想用rn做个RSA(非对称加密)登录 基本流程就是在服务端生成RSA后,将“公钥”发到客户端,然后客户端用“公钥”加密信息发送到服务端,服务务端用私钥解密. 过程不复杂,问题在于,nodejs和rn都准备用js做RSA加密,本来想用node-rsa做的,可是搞不懂它怎么设置公钥加密 于是直接做node-rsa的基础库http://www-cs-students.stanford.edu/~tjw/jsbn/,简单封装了下做了个demo 客户端: 'use strict'; const React

Android之Rsa加密那些年我们踩过的坑

前言: 最近无意中和同事交流数据安全传输的问题,想起自己曾经使用过的Rsa非对称加密算法,闲下来总结一下. 什么是Rsa加密? RSA算法是最流行的公钥密码算法,使用长度可以变化的密钥.RSA是第一个既能用于数据加密也能用于数字签名的算法. RSA算法原理如下: 1.随机选择两个大质数p和q,p不等于q,计算N=pq: 2.选择一个大于1小于N的自然数e,e必须与(p-1)(q-1)互素. 3.用公式计算出d:d×e = 1 (mod (p-1)(q-1)) .4.销毁p和q. 最终得到的N和e