javascript 和 java 使用 pubKey 加密消息

javascript and java use the pubKey to encryption message

在RSA中,我知道pubKey,我想用pubKey加密javascript和java中的消息,但是结果不对。 JavaScript 代码如下:

    function getEntryptPwd(pwd){
    var pubKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDC7kw8r6tq43pwApYvkJ5laljaN9BZb21TAIfT/vexbobzH7Q8SUdP5uDPXEBKzOjx2L28y7Xs1d9v3tdPfKI2LR7PAzWBmDMn8riHrDDNpUpJnlAGUqJG9ooPn8j7YNpcxCa1iybOlc2kEhmJn5uwoanQq+CA6agNkqly2H4j6wIDAQAB";
    if(!pwd || !pubKey || !SysConfig.encryptInfo){
        return pwd;
    }
    var encrypt = new JSEncrypt();
    encrypt.setPublicKey(pubKey);
    return encrypt.encrypt(pwd);
}

我用的是getEntryptPwd("123456").length的方法,结果是172。 java 代码如下:

        String publicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDC7kw8r6tq43pwApYvkJ5laljaN9BZb21TAIfT/vexbobzH7Q8SUdP5uDPXEBKzOjx2L28y7Xs1d9v3tdPfKI2LR7PAzWBmDMn8riHrDDNpUpJnlAGUqJG9ooPn8j7YNpcxCa1iybOlc2kEhmJn5uwoanQq+CA6agNkqly2H4j6wIDAQAB";
    KeyFactory keyFactory = KeyFactory.getInstance("RSA");
    byte[] encodedKey = Base64.decode(publicKey);
    PublicKey pubKey = keyFactory.generatePublic(new X509EncodedKeySpec(encodedKey));

    byte[] encrypt = encrypt(pubKey, "123456".getBytes("utf-8"));

    System.out.println(new BASE64Encoder().encode(encrypt).length());

但是,输出结果是176。 一定有问题,我找不到

您似乎在使用旧版 sun.misc.Base64Encoder,并且添加了一些额外的换行符。将其替换为 java.util.Base64 以获得 172

的输出
System.out.println(
      Base64.getEncoder().encodeToString(encrypt).length());