Java php 的类似物或节点加密函数
Java analogue of php or node encryption function
我正在尝试在 java 中编写一个加密函数,它类似于 php 和节点中下面提到的函数:
openssl_public_encrypt($gzipped_string_to_encrypt, $encrypt_data, $key_string, OPENSSL_PKCS1_OAEP_PADDING);
和
const crypto = require('crypto');
const result = crypto.publicEncrypt({
key: key,
padding: crypto.constants.RSA_PKCS1_OAEP_PADDING
}, gzippedStringToEncrypt);
主要问题是 - 我找不到 RSA_PKCS1_OAEP_PADDING 参数的适当 java 模拟。
我是这样试过的:
Cipher cipher = Cipher.getInstance("RSA/ECB/OAEPWithSHA1AndMGF1Padding", BouncyCastleProvider.PROVIDER_NAME);
val oaepParameterSpec = new OAEPParameterSpec("SHA-1", "MGF1", MGF1ParameterSpec.SHA1, PSource.PSpecified.DEFAULT);
val encryptionKey = Base64.decodeBase64(keyString);
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
X509EncodedKeySpec publicSpec = new X509EncodedKeySpec(encryptionKey);
Key key = keyFactory.generatePublic(publicSpec);
cipher.init(Cipher.ENCRYPT_MODE, key, oaepParameterSpec);
encrypted = cipher.doFinal(gziped);
但无法使用成功解密 php 和节点函数结果的函数解密结果。
问题中的例子是正确的。它给出了可以正确解密的输出。
我正在尝试在 java 中编写一个加密函数,它类似于 php 和节点中下面提到的函数:
openssl_public_encrypt($gzipped_string_to_encrypt, $encrypt_data, $key_string, OPENSSL_PKCS1_OAEP_PADDING);
和
const crypto = require('crypto');
const result = crypto.publicEncrypt({
key: key,
padding: crypto.constants.RSA_PKCS1_OAEP_PADDING
}, gzippedStringToEncrypt);
主要问题是 - 我找不到 RSA_PKCS1_OAEP_PADDING 参数的适当 java 模拟。 我是这样试过的:
Cipher cipher = Cipher.getInstance("RSA/ECB/OAEPWithSHA1AndMGF1Padding", BouncyCastleProvider.PROVIDER_NAME);
val oaepParameterSpec = new OAEPParameterSpec("SHA-1", "MGF1", MGF1ParameterSpec.SHA1, PSource.PSpecified.DEFAULT);
val encryptionKey = Base64.decodeBase64(keyString);
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
X509EncodedKeySpec publicSpec = new X509EncodedKeySpec(encryptionKey);
Key key = keyFactory.generatePublic(publicSpec);
cipher.init(Cipher.ENCRYPT_MODE, key, oaepParameterSpec);
encrypted = cipher.doFinal(gziped);
但无法使用成功解密 php 和节点函数结果的函数解密结果。
问题中的例子是正确的。它给出了可以正确解密的输出。