gpt4 book ai didi

node.js - 在 Node.js 中使用私钥和 "SHA256 with RSA"算法生成签名

转载 作者:行者123 更新时间:2023-12-05 09:36:24 28 4
gpt4 key购买 nike

我们的系统将调用带有身份验证服务器的 API。这个服务器是用java构建的,需要大量的 key 加密。一个要求是使用“SHA256 with RSA”算法生成带有客户端(它是我们)私钥的签名。我已经用 Java 完成了这个但不确定它是否正确。 Rur 服务器是用 Nodejs 编写的。如何将以下 Java 代码转换为 Node.js?

public static String signSHA256RSA(String input, String strPk) throws Exception {
Security.addProvider(new BouncyCastleProvider());
// Remove markers and new line characters in private key
String realPK = strPk.replaceAll("-----END PRIVATE KEY-----", "")
.replaceAll("-----BEGIN PRIVATE KEY-----", "")
.replaceAll("\n", "");

byte[] b1 = Base64.getDecoder().decode(realPK);
PKCS8EncodedKeySpec spec = new PKCS8EncodedKeySpec(b1);
KeyFactory kf = KeyFactory.getInstance("RSA");

Signature privateSignature = Signature.getInstance("SHA256withRSA");
privateSignature.initSign(kf.generatePrivate(spec));
privateSignature.update(input.getBytes("UTF-8"));
byte[] s = privateSignature.sign();
return Base64.getEncoder().encodeToString(s);
}

最佳答案

NodeJS 在 crypto 包中有一个内置的实用程序可以帮助你

更多信息请点击此处 https://nodejs.org/api/crypto.html#crypto_class_sign

这是文档中的示例


const { privateKey, publicKey } = crypto.generateKeyPairSync('ec', {
namedCurve: 'sect239k1'
});

const sign = crypto.createSign('SHA256');
sign.write('some data to sign');
sign.end();
const signature = sign.sign(privateKey, 'hex');

const verify = crypto.createVerify('SHA256');
verify.write('some data to sign');
verify.end();
console.log(verify.verify(publicKey, signature, 'hex'));
// Prints: true

关于node.js - 在 Node.js 中使用私钥和 "SHA256 with RSA"算法生成签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65166774/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com