最近看到一个用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文件中。╮(╯▽╰)╭

解决方案 »

  1.   

    randomStruct估计是为了在https中的对称加密+非对称加密而实现吧
    在https中,先使用非对称加密交换得到一个对称加密的key,之后就转向了效率更高的对称加密来传输数据
    不过这估计是不是联想力太丰富了点?
      

  2.   

    呵呵,感谢你的回答,不是这样的。
    这个C++源程序是自己实现了整个RSA加密算法,在公钥加密方法里面,它引入了一个随机量。只是我不懂它这个随机量是在起什么作用,在java中如何实现这个方法?众所周知,java加解密的时候,只要定义好Cipher的Mode,然后用Cipher.dofinal()方法就OK,不用去深究内部的加解密到底是怎么实现的。
      

  3.   

    这个得让实现这个方法的人来解释。 
    在这边瞎猜也没什么用吧,  有做过几次RSA加密的项目,真没听说需要一个随机的字符串和公钥来加密。
      

  4.   

    公钥加/解密需要一对公钥和私钥。
    公钥可以发给任何人,用来加密。
    私钥必需安全保存,用来解密。PKCS #1、PKCS #5 是填充物 有许多种,大多数算法都支持PKC #5和No Padding。
      

  5.   

    R_RANDOM_STRUCT不知道是不是和Java的SecureRandom一样,SecureRandom是创建IV时用的。