RSA加密:PHP代码的Java代码

时间:2018-04-17 07:56:30

标签: java php rsa

我正在尝试在Java和PHP中实现RSA加密,但我似乎无法让PHP使用Java输出相同的加密结果。

Java代码

public static String sign(byte[] data,String privateKey)throws Exception{
    byte[] keyBytes = Base64.decodeBase64(privateKey);
    PKCS8EncodedKeySpec pkcs8EncodedKeySpec = new PKCS8EncodedKeySpec(keyBytes);

    //KEY_ALGORTHM="RSA";
    KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORTHM);
    PrivateKey privateKey2 = keyFactory.generatePrivate(pkcs8EncodedKeySpec);

    //SIGNATURE_ALGORITHM="SHA1WithRSA"
    Signature signature = Signature.getInstance(SIGNATURE_ALGORITHM);
    signature.initSign(privateKey2);
    signature.update(data);
    return Base64.encodeBase64String(signature.sign());
}

PHP代码

public function sign( string $data,string $privateKey){
      openssl_private_encrypt($data,$encrypted,$privateKey);
      return base64_encode($encrypted);
}

有人可以帮我翻译成PHP代码吗?

任何帮助都将非常感谢o.O

1 个答案:

答案 0 :(得分:2)

我已经解决了这个问题。

在Java Code中,它的SIGNATURE_ALGORITHM是' SHA1WithRSA'

所以,在PHP代码中

public function sign( string $data,string $privateKey){
  openssl_sign($data,$sign,$privateKeyString,OPENSSL_ALGO_SHA1);
  return base64_encode($encrypted);
}