这个RSA算法中,公钥加密是咋回事?

liuhuabai100 2012-10-21 02:27:45
最近看到一个用C++语言写的RSA加密算法,它的几个方法如下:


int RSAPublicEncrypt
(output, outputLen, input, inputLen, publicKey, randomStruct)
int RSAPublicDecrypt (output, outputLen, input, inputLen, publicKey)
int RSAPrivateEncrypt (output, outputLen, input, inputLen, privateKey)
int RSAPrivateDecrypt (output, outputLen, input, inputLen, privateKey)

具体代码内容见:http://www.codeforge.cn/read/112076/rsa.c__html

第2、3、4个方法在java中使用Cipher、RSAPublicKey、RSAPrivatekey这几个类非常容易实现,
唯独第一个公钥加密的算法,它有一个R_RANDOM_STRUCT *randomStruct,在java中怎么实现这个方法?

这个方法的描述是:RSA public-key encryption, according to PKCS #1.和java中默认使用的PKCS #5有点差异;
然后就是其中有一个R_GenerateBytes (&byte, 1, randomStruct)方法,它在r_random.c文件中。╮(╯▽╰)╭


...全文
212 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
想喝咖啡的貓 2012-10-25
  • 打赏
  • 举报
回复
R_RANDOM_STRUCT不知道是不是和Java的SecureRandom一样,SecureRandom是创建IV时用的。
想喝咖啡的貓 2012-10-25
  • 打赏
  • 举报
回复
公钥加/解密需要一对公钥和私钥。
公钥可以发给任何人,用来加密。
私钥必需安全保存,用来解密。

PKCS #1、PKCS #5 是填充物 有许多种,大多数算法都支持PKC #5和No Padding。
Kanepan 2012-10-25
  • 打赏
  • 举报
回复
这个得让实现这个方法的人来解释。
在这边瞎猜也没什么用吧, 有做过几次RSA加密的项目,真没听说需要一个随机的字符串和公钥来加密。
liuhuabai100 2012-10-23
  • 打赏
  • 举报
回复
^^^^^^ 顶上去,求解答!
ldq67123 2012-10-21
  • 打赏
  • 举报
回复
果然我想多了,数学挂科的撸过
liuhuabai100 2012-10-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
randomStruct估计是为了在https中的对称加密+非对称加密而实现吧
在https中,先使用非对称加密交换得到一个对称加密的key,之后就转向了效率更高的对称加密来传输数据
不过这估计是不是联想力太丰富了点?
[/Quote]
呵呵,感谢你的回答,不是这样的。
这个C++源程序是自己实现了整个RSA加密算法,在公钥加密方法里面,它引入了一个随机量。只是我不懂它这个随机量是在起什么作用,在java中如何实现这个方法?

众所周知,java加解密的时候,只要定义好Cipher的Mode,然后用Cipher.dofinal()方法就OK,不用去深究内部的加解密到底是怎么实现的。
ldq67123 2012-10-21
  • 打赏
  • 举报
回复
randomStruct估计是为了在https中的对称加密+非对称加密而实现吧
在https中,先使用非对称加密交换得到一个对称加密的key,之后就转向了效率更高的对称加密来传输数据
不过这估计是不是联想力太丰富了点?

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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