RSA加密(跨平台通用的)


 1      /// <summary>
2 /// RSA加密
3 /// </summary>
4 /// <param name="strPublickey"></param>
5 /// <param name="content"></param>
6 /// <returns></returns>
7 public string RsaEncrypt(string strPublickey, string content)
8 {
9 var rsa = new RSACryptoServiceProvider();
10 var param = new RSAParameters();
11 byte[] bdata = GetBytes("65537");
12 param.Exponent = bdata;
13 param.Modulus = GetBytes(strPublickey);
14 rsa.ImportParameters(param);
15
16 byte[] cipherbytes = rsa.Encrypt(Encoding.UTF8.GetBytes(content),false);
17
18 return BitConverter.ToString(cipherbytes).Replace("-", string.Empty);
19 }
20
21 public byte[] GetBytes(String num)
22 {
23 BigInteger n = new BigInteger(num, 10);
24 String s = n.ToString(2);
25 if (s.Length % 8 > 0)
26 {
27 s = new String(‘0‘, 8 - s.Length % 8) + s;
28 }
29 byte[] data = new byte[s.Length / 8];
30 String ocetstr;
31 for (int i = 0; i < data.Length; i++)
32 {
33 ocetstr = s.Substring(8 * i, 8);
34 data[i] = Convert.ToByte(ocetstr, 2);
35 }
36 return data;
37 }
       调用方式
       var result = new BigInteger(pubkey, 16);
           String sp = RsaEncrypt(string.Format("{0}", result), message);
       BigInteger下载地址
       http://www.codeproject.com/Articles/2728/C-BigInteger-Class

RSA加密(跨平台通用的)

时间: 2024-10-09 07:41:08

RSA加密(跨平台通用的)的相关文章

RSA密钥的跨平台通用

RSA使用public key加密,用private key解密(签名相反,使用private key签名,用public key验证签名).比如我跟合作方D之间的数据传输,我使用D提供给我的public key进行加密后,传给D,他使用他的private key解密后得到原文:response时,D使用我提供给他的public key加密,我收到后使用我的private key解密得到原文.一个常用的场景是两方之间的数据传输使用AES加密,再把AES的密钥通过RSA加密后一并传输.(AES的性

Android和IOS关于RSA加密以及服务端解密的研究实现

一.  密钥对的生成 RSA加密解密,类似于支付宝中的加解密功能,以前的app使用的是DES加密即对称加密算法,只需要一个密钥:而采用RSA实现加解密需要一个密钥对,即公钥和私钥.所以首先要做的操作是生成一个密钥对,在window 7环境下,这里借用支付宝demo中的openssl命令行工具,毕竟是通用的,密钥对的生成流程大致如下: 1.生成RSA私钥 <span style="white-space:pre"> </span>genrsa -out rsa_p

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

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

MD5加密和RSA加密

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

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

(原创)VS2017 C# 运行 Javasrcipt RSA 加密用户名登录 Java开发的服务器

第一次写博客. 最近想做一个Web的自动登录,用户名和密码是RSA加密过的,后台是用的JAVA,我只会点C#,抓包什么都搞定了(使用的是Fiddler),不过由于C#和RSA的加密方式不同,我搞了N天,都搞不定,中间问过很多人,愿意帮助的人不多,可能是我太菜了.就是为了得到个认证的cookie,我中间用过Webbrowser控件,让人自己登录,然后得到Cookie,不过感觉终究是个半成品. 然而,C#和Java中间的RSA互转,我遇到了2个问题,网上都是public key 转 public k

用cryptico.js实现RSA加密(应对cryptico不支持PEM)

问题: 随手分享一下好了,这个问题困扰了很久. cryptico.js这个加密算法库很全,很适合在前端用到各种加密解密算法的需求.但是美中不足的是,它的RSA加密不支持PEM格式,所以如果你后端用java或者python生成的公钥不能直接用PEM的base64格式传给前端进行加密. 解决办法: 解决办法就是在后端提取出来n和e这两个数,转成16进制之后传给前端,然后人为修改cryptico的两个函数: var publicKeyFromString = function (string) { v

RSA加密解密及RSA加签验签

RSA安全性应用场景说明 在刚接触RSA的时候,会混淆RSA加密解密和RSA加签验签的概念.简单来说加密解密是公钥加密私钥解密,持有公钥(多人持有)可以对数据加密,但是只有持有私钥(一人持有)才可以解密并查看数据:加签验签是私钥加签公钥验签,持有私钥(一人持有)可以加签,持有公钥(多人持有)可以验签. 在金融行业在设计到数据交互传输的时候,需要考虑数据的安全性问题.下文通过介绍RSA的加密和加签两个特性,说明RSA加密技术在保障数据传输过程中的安全性以及实现数据的防篡改和防否机制的应用场景及代码

python RSA加密解密及模拟登录cnblog

1.公开密钥加密 又称非对称加密,需要一对密钥,一个是私人密钥,另一个则是公开密钥.公钥加密的只能私钥解密,用于加密客户上传数据.私钥加密的数据,公钥可以解密,主要用于数字签名.详细介绍可参见维基百科. 2.RSA加密算法 RSA加密属于非对称加密.RSA算法基于一个十分简单的数论事实:将两个大质数相乘十分容易,但是想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥.维基百科中对RSA算法的安全性进行说明:RSA加密算法 "对极大整数做因式分解的难度决定了RSA算法的可靠性.换言