This commit is contained in:
2025-02-19 00:34:51 +08:00
parent cf1cc83547
commit 2f3ffe2a34
33 changed files with 3180 additions and 832 deletions

View File

@@ -1,11 +1,43 @@
var NodeRSA = require('node-rsa')
//1.创建RSA对象并指定 秘钥长度
var key = new NodeRSA({ b: 512 });
key.setOptions({ encryptionScheme: 'pkcs1' });//指定加密格式
const forge = require("node-forge")
//2.生成 公钥私钥,使用 pkcs8标准pem格式
var publicPem = key.exportKey('pkcs8-public-pem');//制定输出格式
var privatePem = key.exportKey('pkcs8-private-pem');
// // 1. 加载公钥(假设公钥已存在,此处用 PEM 占位符)
// const publicKeyPem = `-----BEGIN PUBLIC KEY-----
// MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAISllU6XByx95bXml93hyjJkmD8m4Ff2
// 1BMQ2NdDzsdmUMiPsXul0EmLWgPRSQZKGS30C142JAjYT4gyaLGsXeMCAwEAAQ==
// -----END PUBLIC KEY-----`;
console.log('公钥:\n',publicPem);
console.log('私钥:\n', privatePem);
// // 2. 加载公钥对象
// const publicKey = forge.pki.publicKeyFromPem(publicKeyPem);
// // 3. 待解密的数据Base64 编码的加密内容)
// const encryptedBase64 = '...'; // 替换为你的加密数据
// // 4. Base64 解码加密数据
// const encryptedData = forge.util.decode64(encryptedBase64);
// // 5. 使用公钥解密(非标准操作,需确保加密时支持)
// try {
// const decryptedData = publicKey.decrypt(encryptedData, 'RSAES-PKCS1-V1_5');
// const plainText = forge.util.decodeUtf8(decryptedData);
// console.log('解密结果:', plainText);
// } catch (error) {
// console.error('解密失败:', error.message);
// }
// 示例私钥加密(仅用于测试)
const privateKeyPem = `-----BEGIN PRIVATE KEY-----
MIIBUwIBADANBgkqhkiG9w0BAQEFAASCAT0wggE5AgEAAkEAhKWVTpcHLH3lteaX
3eHKMmSYPybgV/bUExDY10POx2ZQyI+xe6XQSYtaA9FJBkoZLfQLXjYkCNhPiDJo
saxd4wIDAQABAkBiOxFf2t5YJ3+2fmbWzP/k47QPiGW5HrQczmwWtkNqTBYNNxAx
vCkwygm61wN95krzGETFtmpkYYb8SM9JbiLxAiEA5qt/CuOJfu+Uu2bnvBnDwpxC
U/IGuKZXlVKyvm2auHkCIQCTNn/UfFT0CojoNltBu49uwdNDwfptvQdaaj9UwsAq
OwIgAkCqfPC75wFv8mSO3sdhogTkoO08I5F8SXkFRdbMLAECICIaR/ajbtKx9hFF
NlK97nZL9HMH5smxNpjdcBpkmzutAiAvXVkx64QEtu/+UtHNo+zNR8ap5HB6a+ZM
sB4t3z2WcA==
-----END PRIVATE KEY-----`;
const privateKey = forge.pki.privateKeyFromPem(privateKeyPem);
const plainText = 'Hello, World!';
const encrypted = privateKey.sign(forge.md.sha1.create(), plainText); // 使用签名方法模拟加密
const encryptedBase64 = forge.util.encode64(encrypted);
console.log('私钥加密结果 (Base64):', encryptedBase64);