43 lines
1.9 KiB
JavaScript
43 lines
1.9 KiB
JavaScript
const forge = require("node-forge")
|
||
|
||
// // 1. 加载公钥(假设公钥已存在,此处用 PEM 占位符)
|
||
// const publicKeyPem = `-----BEGIN PUBLIC KEY-----
|
||
// MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAISllU6XByx95bXml93hyjJkmD8m4Ff2
|
||
// 1BMQ2NdDzsdmUMiPsXul0EmLWgPRSQZKGS30C142JAjYT4gyaLGsXeMCAwEAAQ==
|
||
// -----END PUBLIC KEY-----`;
|
||
|
||
// // 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); |