在java上加密的RSA,无法通过openssl api

时间:2017-01-20 09:14:00

标签: java c++ openssl rsa bouncycastle

在java方面:

  • 使用bouncycastle获取密钥对,privateKey和publicKey

  • 使用privateKey加密orig message1以获取加密的消息2

  • 使用publicKey解密加密的message2即可,成功获取相同的orig消息1

在c ++方面:

  • 基于openssl," RSA_public_decrypt"和" RSA_private_encrypt" API

  • 使用相同的publicKey(在java端生成)来解密message2,返回一个缓冲区,每个字节填充0,RSA_public_decrypt返回成功。

另外:

  • 在c ++方面,如果使用privateKey加密orig消息1来获取加密消息3,然后用公钥解密,成功获取message1。但是message3与加密的message2(java方面)不同。

  • 以上所有使用了RSA_NO_PADDING

  • 在java端,加密次数多,得到相同的message2

  • 在c ++方面,加密次数多,也得到相同的消息3。但是message2与message3不同。

问题是如何在c ++端解密以获取在java端加密的orig message1?

谢谢!

1 个答案:

答案 0 :(得分:0)

  def update
    @product.category_id = params[:category_id]

    respond_to do |format|
      if @product.update(product_params)
        format.html { redirect_to @product, notice: 'Product was successfully updated.' }
        format.json { render :show, status: :ok, location: @product }
      else
        format.html { render :edit }
        format.json { render json: @product.errors, status: :unprocessable_entity }
      end
    end
  end