通过 npm 安装:
npm install node-forge
或者使用 CDN:
<script src="https://cdn.jsdelivr.net/npm/node-forge/dist/forge.min.js"></script>
以下是一个使用 node-forge 进行 RSA 加密和解密的示例:
const forge = require('node-forge');
// 生成 RSA 密钥对
const keypair = forge.pki.rsa.generateKeyPair(2048);
const publicKey = keypair.publicKey;
const privateKey = keypair.privateKey;
// 加密数据
const data = 'Hello, World!';
const encryptedData = publicKey.encrypt(data, 'RSA-OAEP');
// 解密数据
const decryptedData = privateKey.decrypt(encryptedData, 'RSA-OAEP');
console.log('Decrypted Data:', decryptedData);
node-forge 提供了全面的 PKI 功能,可以生成和管理证书。以下是一个生成自签名证书的示例:
const forge = require('node-forge');
const pki = forge.pki;
// 生成 RSA 密钥对
const keys = pki.rsa.generateKeyPair(2048);
// 创建证书
const cert = pki.createCertificate();
cert.publicKey = keys.publicKey;
cert.serialNumber = '01';
cert.validity.notBefore = new Date();
cert.validity.notAfter = new Date();
cert.validity.notAfter.setFullYear(cert.validity.notBefore.getFullYear() + 1);
// 设置证书的 subject 和 issuer
const attrs = [{
name: 'commonName',
value: 'example.org'
}, {
name: 'countryName',
value: 'US'
}, {
shortName: 'ST',
value: 'Virginia'
}, {
name: 'localityName',
value: 'Blacksburg'
}, {
name: 'organizationName',
value: 'Test'
}, {
shortName: 'OU',
value: 'Test'
}];
cert.setSubject(attrs);
cert.setIssuer(attrs);
// 签名证书
cert.sign(keys.privateKey);
// PEM 格式的公钥、私钥和证书
const pemPrivateKey = pki.privateKeyToPem(keys.privateKey);
const pemPublicKey = pki.publicKeyToPem(keys.publicKey);
const pemCert = pki.certificateToPem(cert);
console.log('Private Key:', pemPrivateKey);
console.log('Public Key:', pemPublicKey);
console.log('Certificate:', pemCert);
这个示例展示了如何生成一个自签名的 X.509 证书,并输出 PEM 格式的公钥、私钥和证书。这些证书可以用于测试目的或本地开发环境中的安全通信。
node-forge 是一个功能强大的库,提供了广泛的加密和网络功能,适用于各种安全通信和数据保护场景。