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的性能高过RSA)。
关于密钥的生成,Linux下常用OpenSSL生成,也可以使用特定语言平台所提供的方法生成。
// c#版本 (参数false生成私钥,public生成公钥)
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
rsa.ExportParameters(false); //对像
rsa.ExportCspBlob(false); //字符串
rsa.ToXmlString(false); //xml格式
# python版本
import rsa (pubkey, privkey) = rsa.newkeys(1024) pub = pubkey.save_pkcs1() #public key
pri = privkey.save_pkcs1() #private key
也可以使用OpenSSL.NET生成,这是一个OpenSSL在.net上的实现。里边有个cli 项目可以在命令行下运行,他生成的应该和linux下使用OpenSSL生成的一致的。
genrsa -out rsa_private_key.pem 1024
rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem
然并卵,每个平台语言之间的RSA密钥不能通用,c#生成的java,python上用不了,OpenSSL生成的C#里用不了,异常信息:不正确的提供程序版本
如果使用OpenSSL生成的密钥,在.net中使用OpenSSL.NET加密解密是个不错的选择。另一个办法就是把密钥转换成各自语言所需的格式,比如这个http://csslab.s3.amazonaws.com/csslabs/Siva/opensslkey.cs
可以把OpenSSL Key转换成c#需要的xml格式,这样就可以直接使用.net framework里的方法进行RSA加密解密了。
有时候合作方给你的可能不是一个public key,而一个cert证书文件,这就需要从这个证书里提取出public key了
#在linux下,通过openssl提取
openssl x509 -in ca.crt -pubkey
RSA密钥的跨平台通用的更多相关文章
- Java与.NET兼容的RSA密钥持久化方法
默认情况下,.NET生成的RSA密钥对可以用XML或字节流来保存,而JAVA中生成的RSA密钥对只能用字节流来保存.而它们的字节流格式不同,就导致Java中生成的RSA密钥对不能在.NET中使用,而. ...
- RSA密钥之C#格式与Java格式转换
前言 最近由于项目需求,服务端由c#编写,客户端由java编写.通信数据使用RSA非对称加密.但是java和c#生成的密钥格式是不一样的,所以需要转换格式才可以正常使用.网上搜到使用java进行格式转 ...
- RSA密钥生成与使用
RSA密钥生成与使用 openssl生成工具链接:http://pan.baidu.com/s/1c0v3UxE 密码:uv48 1. 打开openssl密钥生成软件打开 openssl 文件夹下的 ...
- RSA密钥,JAVA与.NET之间转换
最近在做银联的一个接口,用到RSA签名,悲剧来了,.net用的RSA密钥格式和JAVA用的不一样 .net为XML格式 <RSAKeyValue><Modulus>53Knuj ...
- JAVA,NET RSA密钥格式转换
JAVA和NET RSA密钥格式相互转换(公钥,私钥) 做了一个小项目遇到java和.net非对称加密问题,java的公钥和私钥就直接是一个字符串的形式展示的,但是.net是以xml简单包裹形式展示的 ...
- Atitit.rsa密钥生成器的attilax总结
Atitit.rsa密钥生成器的attilax总结 1.1. 密钥生成器 1 1.2. 生成固定的密钥 2 1.2.1. 设置或重置 SecureRandom 对象的随机数种子 2 1.3. 密钥结构 ...
- cmd命令进行RSA 密钥加密操作
--参考 http://msdn.microsoft.com/zh-cn/library/2w117ede http://msdn.microsoft.com/zh-cn/library/yxw286 ...
- .NET Core RSA密钥的xml、pkcs1、pkcs8格式转换和JavaScript、Java等语言进行对接
众所周知在.NET下的RSA类所生成的密钥为Xml格式,而其他语言比如java一般使用pkcs8格式的密钥,JavaScript一般使用pkcs1格式.我们在开发过程中很可能遇到需要与其他语言开发的a ...
- [Linux] 在 Linux CLI 使用 ssh-keygen 生成 RSA 密钥
RSA 是一种公钥加密算法,在 1977 年由麻省理工学院的 Ron Rivest, Adi Shamir, Leonard Adleman 三人一起提出,因此该算法命名以三人姓氏首字母组合而成. S ...
随机推荐
- 关于mysql 的一些零碎.
/* 又在做自己以前做的事.总是拿以前的眼光来看现在,导致了其实自己已经很low,但是还觉得自己很xxx. 好吧,最近开始PHP审计.jishigou!!!!!! */ 查看日志情况. show va ...
- jsTree搜索排序向上向下
var _node = null, _all_match = 0, _current_match = 0; $(document).ready(function() { $('#area_settin ...
- window date type
Most string operations can use the same logic for Unicode and for Windows code pages. The only diffe ...
- Android_helloworld
看见 HelloWorld 相信你就明白我要干什么了.这是每个程序的第一步,让 HelloWorld 带我们走入 Android 的学习之旅吧. 前面我们下载了海马模拟器,所以接下来我们是在模拟器上进 ...
- CSS3凹凸字
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xht ...
- [转] MovieClip转Bitmap方法
package { import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.Loader; ...
- echo颜色显示
echo -e "\033[30m 黑色字 \033[0m" echo -e "\033[31m 红色字 \033[0m" echo -e "\033 ...
- GIS开发环境全面升级10.1
最近,因为公司开发的需要,对开发环境进行全面的升级,在这其中也遇到了不少问题,在之后将陆续整理出来,以便以后查看. 之前开发环境:VS2008,ArcGIS9.3,ArcEngine9.3,Oracl ...
- zendstudio 声明变量类型,让变量自动方法提示
zendstudio 行内注释, 显式声明变量类型,让变量自动方法提示 $out = []; /* @var $row \xxyy\SizeEntity */ foreach ($rows[ 'lis ...
- ycsb-命令及参数-与生成的负载类型相关
loadbin/ycsb load mydb -P workloads/workloada -p "mydb.host=127.0.0.1" -p "mydb.port= ...