RSACryptoServiceProvider 如何指定公钥和私钥??

小灰狼 2016-08-17 04:31:38
dot net 平台和 java、php 平台进行数据交换,几个平台都会生成自己的公钥/私钥对,然后公布公钥。java 平台的公钥是一段字节数组,php 平台目前暂时还不知道。

而在 dot net 平台上的 RSACryptoServiceProvider 类,只要一创建就给自己生成了公钥和私钥,并且导出来的公钥和私钥也是一段 xml,给 java 平台或者 php 平台,人家怎么认得?而 java 平台提供的公钥,我怎么导到 RSACryptoServiceProvider 类里去?
并且 java 系统中根本不需要设置什么 VI 之类的参数。

看起来 dot net 的加密和解密只给 dot net 平台自己服务,但我觉得这是不可能的!
...全文
1296 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
#12L地址RSAConverter补上了
小灰狼 2016-08-26
  • 打赏
  • 举报
回复
引用 11 楼 starfd 的回复:
那个博客里面有连接,虽然字很短,但颜色不一样,你仔细看看,文字部分的
你说的是这一截吗? 重要的事情说三遍,该篇文章主要是验证JAVA的RSA签名、验签的测试代码,主要代码参考 http://xw-z1985.iteye.com/blog/1837376 这个链接我看过了,思路有点不太一样,需要第三方工具生成密钥对 不过这里提供了一段代码用来设置C#的密钥,还没来得及验证,事儿太多了,又杂,唉!
  • 打赏
  • 举报
回复
好像那篇没连接,应该是前面的有链接…… http://blog.csdn.net/starfd/article/details/51838589
  • 打赏
  • 举报
回复
那个博客里面有连接,虽然字很短,但颜色不一样,你仔细看看,文字部分的
小灰狼 2016-08-26
  • 打赏
  • 举报
回复
引用 4 楼 starfd 的回复:
RSA的公钥加密、私钥解密是同样正确的,那篇博客没写这段,因为没必要,大家都是遵循的同样标准,即公钥加密、私钥解密 至于私钥加密、公钥解密这段,估计C#的开发者认为这本身就不合理,所以不做提供吧,因为java里面的私钥加密、公钥解密也只是用于验签,而在已经有标准验证方法的前提下,私钥加密、公钥解密的方式是否还有必要存在?
不好意思,这一周被别的事占用了 之前我不知道C#专门提供了一个生成和验证签名的类,在JAVA中也有。 因为私钥加密、公解密私的用途基本上都是为了用于签名,既然C#已经封装了这个功能,那么私钥加密、公钥解密的功能确实不必提供了 但是,这不是我遇到的问题的关键 因为发现通过 C# 的 RSACryptoServiceProvider 生成的公钥,无法导入到 java 中,而从 java 中生成的公钥,也导不进C#中 如此一来,连基本的加密和解密都无法完成了
小灰狼 2016-08-26
  • 打赏
  • 举报
回复
引用 1 楼 starfd 的回复:
http://blog.csdn.net/starfd/article/details/51917916 java的是Base64格式,php和net都是xml格式
不好意思,这一个星期忙别的去了 你提供的链接里,有个类 RSAConverter 找不到,问了度娘也没有 也不知道这是个什么格式,想自己写个转换都不知从何下手
Poopaye 2016-08-18
  • 打赏
  • 举报
回复
https://msdn.microsoft.com/en-us/library/system.security.cryptography.rsaparameters.aspx 这个结构可以指定各个参数,然后通过provider的importparameters导入 下面有介绍每个成员在算法中的含义
Poopaye 2016-08-18
  • 打赏
  • 举报
回复
你就没了解rsa的机制 公钥中的公,就是指你公开出来的意思,你没公开的那个就叫私钥 而且公私钥,说穿了就是3个数字,任何语言都能使用,只是存放的格式不同而已
  • 打赏
  • 举报
回复
而且我看过C#版私钥加密、公钥解密的代码思路,里面虽然传进去的是私钥,但其实用的都是公钥部分内容,可惜实际按那个代码运行失败,所以无法得知java里面的私钥加密、公钥解密是否也是如此
  • 打赏
  • 举报
回复
然后rsa签名java部分的生成签名代码那篇博客里是同样存在的,不然怎么和C#生成的作对比呢
  • 打赏
  • 举报
回复
RSA的公钥加密、私钥解密是同样正确的,那篇博客没写这段,因为没必要,大家都是遵循的同样标准,即公钥加密、私钥解密 至于私钥加密、公钥解密这段,估计C#的开发者认为这本身就不合理,所以不做提供吧,因为java里面的私钥加密、公钥解密也只是用于验签,而在已经有标准验证方法的前提下,私钥加密、公钥解密的方式是否还有必要存在?
小灰狼 2016-08-18
  • 打赏
  • 举报
回复
引用 1 楼 starfd 的回复:
http://blog.csdn.net/starfd/article/details/51917916 java的是Base64格式,php和net都是xml格式
这个只能用来验签,不能用来相互加解密 另外发现,在C#中只提供公钥加密、私钥解密,不能使用私钥加密公钥解密。在Java 中是可以反过来用的。 后者是用来进行数字签名,虽然C#自己提供了数字签名的办法,但那个签名只有 C# 自己识别,java 无法识别。 版主提供的资料虽然对RSA有了新的认识,但还是没有解决问题啊!
  • 打赏
  • 举报
回复
java不需要iv是因为用了ecb模式,如果用cbc的话就是要iv的
  • 打赏
  • 举报
回复
http://blog.csdn.net/starfd/article/details/51917916 java的是Base64格式,php和net都是xml格式

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧