NodeJS sign.sign(privateKey[, outputEncoding])函数
Node.js是一个跨平台、开源的后端JavaScript运行环境,它使用V8引擎在Web浏览器外执行JavaScript代码。Node.js允许开发者使用JavaScript来创建命令行工具和服务器端脚本,即在将页面发送到用户浏览器之前在服务器上运行脚本。加密功能通过crypto模块提供,该模块包括对OpenSSL的哈希、HMAC、加密、解密、签名和验证方法的封装。
sign.sign() 方法根据传入的数据计算签名,它使用sign.update()或sign.write()进行计算。
语法:
sign.sign(privateKey[, outputEncoding])
参数:
- privateKey: 私钥。如果是KeyObject,则可以直接传递,否则需要传递一个包含以下参数的对象:
- dataEncoding: 要使用的数据编码。可以是’der’或’ieee-p1363’。
- padding: RSA的可选填充值。
- saltLength: 盐的长度。
- outputEncoding: 返回值的编码格式。
返回值: 以Buffer或String形式的签名。
安装crypto模块:
npm install crypto
项目结构:
package.json:
{
"name": "crypto",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}
示例1:
文件名:index.js
import { generateKeyPairSync, createSign } from 'crypto'
const { privateKey, publicKey } = generateKeyPairSync("rsa", {
modulusLength: 2048,
});
let sign = createSign('SHA256');
let data = sign.sign(privateKey);
console.log(data.toString('hex'));
输出:
示例2:
文件名:index.js
import { generateKeyPairSync, createSign } from 'crypto'
const { privateKey, publicKey } = generateKeyPairSync("ec", {
namedCurve: "sect239k1",
});
let sign = createSign('SHA256');
let data = sign.sign(privateKey, 'base64');
console.log(data);
输出:
参考链接: https://nodejs.org/api/crypto.html#signsignprivatekey-outputencoding