从Java加密密码RSA公钥节点

从Java加密密码RSA公钥节点,java,node.js,encryption,rsa,public-key,Java,Node.js,Encryption,Rsa,Public Key,我需要在NodeJS中使用java语言中的公钥RSA实现encrpytion来加密HttpPost参数 public class RSAUtil { public static PublicKey getPublicKey(String key) throws Exception { byte[] keyBytes = Base64.decodeBase64(key.getBytes()); X509EncodedKeySpec keySpec = new

我需要在NodeJS中使用java语言中的公钥RSA实现encrpytion来加密HttpPost参数

public class RSAUtil {
    public static PublicKey getPublicKey(String key) throws Exception {
        byte[] keyBytes = Base64.decodeBase64(key.getBytes());
        X509EncodedKeySpec keySpec = new X509EncodedKeySpec(keyBytes);
        KeyFactory keyFactory = KeyFactory.getInstance("RSA");
        PublicKey publicKey = keyFactory.generatePublic(keySpec);
        return publicKey;
    }        
    public static String encrypt(String publicKeyFrom, byte[] waitEncrypt) throws Exception {
        String publicK = publicKeyFrom.replaceAll("\\r\\n", "");
        PublicKey publicKey = getPublicKey(publicK);
        Cipher cipher = Cipher.getInstance("RSA");
        cipher.init(1, publicKey);
        int inputLen = waitEncrypt.length;
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        int offSet = 0;        
        for (int i = 0; inputLen - offSet > 0; offSet = i * 117) {
            byte[] cache;
            if (inputLen - offSet > 117) {
                cache = cipher.doFinal(waitEncrypt, offSet, 117);
            } else {
                cache = cipher.doFinal(waitEncrypt, offSet, inputLen - offSet);
            }        
            out.write(cache, 0, cache.length);
            ++i;
        }        
        byte[] encryptedData = out.toByteArray();
        out.close();
        return Base64.encodeBase64String(encryptedData);
    }
}
下面是如何在Java中使用它

String PUBLIC_KEY = "MIIBIjANxxxxxxxxlGqQIDAQAB";
String reqParams = "{\"code\":\"A12345\"}";
String encryptedParams = RSAUtil.encrypt(PUBLIC_KEY, reqParams.getBytes());
我已经尝试将代码翻译成NodeJS,如下所示

const Crypto = require('crypto');
const encryptParams = function (params, publicKey) {
    const buffer = Buffer.from(params)
    const encrypted = Crypto.publicEncrypt(publicKey, buffer)
    const ecryptedParams = encrypted.toString('base64');
    return ecryptedParams;
}

const PUBLIC_KEY = `-----BEGIN PUBLIC KEY-----
MIIBIjANxxxxxxxxlGqQIDAQAB
-----END PUBLIC KEY-----`;
const reqParams = { code: 'A12345' };
const encryptedParams = encryptParams(JSON.stringify(reqParams), PUBLIC_KEY);
但只要我将NodeJS代码中的encrptedParams用于现有的Java代码HttpPost,它就不起作用。如果我使用encrptedParams从Java到NodeJS Axios,它就可以工作了

你能帮我指出我的NodeJS代码有什么问题吗?或者告诉我如何将上面的Java代码加密为NodeJS代码


谢谢。

请显示Node.js代码中的
加密类是什么。它来自NodeJS中的内置加密库,我使用的是v11.10.0