Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法使用unicode字符验证签名_Java_Base64 - Fatal编程技术网

Java 无法使用unicode字符验证签名

Java 无法使用unicode字符验证签名,java,base64,Java,Base64,我试图通过提供字符串以及由不同代码创建的签名来验证签名。验证时,当字符串不包含unicode字符时,它可以正常工作,但当字符串包含unicode字符时,它会失败。我需要一些关于如何解决这个问题的帮助 代码片段1-创建签名 public static String sign(String plainText, PrivateKey privateKey) throws Exception { Signature privateSignature = Signature.getIns

我试图通过提供字符串以及由不同代码创建的签名来验证签名。验证时,当字符串不包含unicode字符时,它可以正常工作,但当字符串包含unicode字符时,它会失败。我需要一些关于如何解决这个问题的帮助

代码片段1-创建签名

public static String sign(String plainText, PrivateKey privateKey) throws Exception {
        Signature privateSignature = Signature.getInstance(Constants.SHA256WITH_RSA);
        privateSignature.initSign(privateKey);
        privateSignature.update(plainText.getBytes(Constants.UTF_8));
        System.out.println("Payload before Encoding::"+plainText);
        byte[] signature = privateSignature.sign();

        return Base64.getEncoder().encodeToString(signature);
    }
代码段2-验证程序

const crypto = require('crypto');
const fs = require('fs');

const getSignatureVerifyResult = () => {

  const signatureText = `cnPiCPt0Wh8c/QLz38CJlk3pNdTHP9TVVrBlEwtkpmRZ8Csmis/uTdu57wi+Ldsm/IExzJa+lue61JoKhE1rYpcmD2FzXkNJlwskkOL1m9LAfu9nkuTgUjoBmAFaOwmHJWwyQyB3UhW53HFhHj26oE1iRNLBMKRW/9anltzmIMy2KNmvWHrDfKwDLTiEBBjEgbv6byB68u16svm3wcu9J1yMQ6qJkGyOP5+KczTnyzEUg76C9zUAoAyNzIjTUKNxKpJWUweUzngU7vvLpsavupPapQjgqkLjSaUiFPQdZR2Do7HggeVPiccSZG148qLv10ndvzm3nR5KZh8/BPnENg==`
  const input = `{"data":{"message":{"message_parts":[{"text":{"content":"\u003e"}}]}}}`

  const publicKeyStr = fs.readFileSync('public_key.txt', { encoding : 'utf8' })

  const verifier = crypto.createVerify('RSA-SHA256')
  verifier.update(input)

  const publicKeyBuf = Buffer.from(publicKeyStr, 'utf-8')
  const signatureBuf = Buffer.from(signatureText, 'base64')
  const result = verifier.verify(publicKeyBuf, signatureBuf)

  return result

}

console.log(getSignatureVerifyResult());

是否尝试在同一系统(Java)上验证unicode消息?是否尝试在同一系统(Java)上验证unicode消息?