const crypto = require('crypto');
const fs = require('fs');
// const privatePem = fs.readFileSync('../cert/LHpem/private_key_pkcs8.pem');
// const publicPem = fs.readFileSync('../cert/LHpem/public_key.pem');
let privatePem = '-----BEGIN PRIVATE KEY-----\n' + 'MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBAKExgWbsuBiDmAq0zATd/B1zEDyfJPSeIt4qwM/HIt028ArYxNfZJeeP/+CSbR8UQ3t00aMfR8u2mTQ/vxlONLE9nhwAi+Ql8u8EL5W4DIj7E6REtx5QFec6CG1BGDOx7DwqgFpQoB/3t8QSq1fl/Vb1HFwtIWkNg51PAQTwmqa1AgMBAAECgYASB/qkq8gwHdBNKkpEJRzFopBnZ5n3rxTRa1DkLS9uNW4GmJb0WjsOOyJxWY/RUS/3SGsG50HdvNBIcvUKfKASIYRuyWb/jlgWF3zF6g8y20oHVJ6+yIs1aBy9tmRRW1iBPRm613Dn0Fsiz4tbEDkCO6yxjAtuLziP/jnAZcpRZQJBAO2ENdLMibwxVzrvnw1ev9jzKp53idhP5ATK+IEawKGeDuf6YAICcZ6McCNqh+T5KQlygDyUk1TZubJNrG9JlEcCQQCtvMqQBTreQzOUfXqZ4NeJzxboR6Hm7L2ivqHK2WK7mAM6zp0iT6AgbPjWxK9VWJm688/4nhPSVryUJ28CfxcjAkA3t8Igl1bgTPrXmorHSijbLgAbeJNfqS4maa7uKmZyA3Afvz5yejxJI0zTIhSLBGA6FSA8FeaSCxli2JHQ8YPVAkBjKaR8O1/0SGsCT/RQK/MZ5yduAKS6B1ndr+zsuNMPu53sTM2HLed5WnlVLAHfNqjX+h00DBXIMlWEQlWsGRn9AkBe7I+TPIAgTVyZ6n+SHidD2QB0tZTpW8DuSgg8JXV8XV8T01wtRe92vbtIflrS2V1LwlucYSLe1w+5cldHHs34' + '\n-----END PRIVATE KEY-----';
let publicPem = '-----BEGIN PUBLIC KEY-----\n' + 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQChMYFm7LgYg5gKtMwE3fwdcxA8nyT0niLeKsDPxyLdNvAK2MTX2SXnj//gkm0fFEN7dNGjH0fLtpk0P78ZTjSxPZ4cAIvkJfLvBC+VuAyI+xOkRLceUBXnOghtQRgzsew8KoBaUKAf97fEEqtX5f1W9RxcLSFpDYOdTwEE8JqmtQIDAQAB' + '\n-----END PUBLIC KEY-----';
//私钥签名
function getSign(params) {
try {
// 读取秘钥
// var privatePem = fs.readFileSync('../cert/LHpem/private_key_pkcs8.pem');
// var key = privatePem.toString();
// console.log('key: ' + key);
var sign = crypto.createSign('RSA-SHA1');
sign.update(params);
sign = sign.sign(privatePem, 'base64');
// return encodeURIComponent(sign)
return sign;
} catch(err) {
console.log('err', err)
}
}
//公钥验签
function verifySign(params, sign) {
try {
// var publicPem = fs.readFileSync('../cert/LHpem/public_key.pem');
// var publicKey = publicPem.toString();
var verify = crypto.createVerify('RSA-SHA1');
verify.update(params);
return verify.verify(publicPem.toString(), sign, 'base64')
} catch(err) {
console.log('veriSign err', err)
}
}
//公钥加密
function publicEncrypt(data) {
let encodeData = crypto.publicEncrypt(publicPem, Buffer.from(data)).toString('base64');
return encodeData;
}
//私钥解密
function privateDecrypt(encodeData) {
let decodeData = crypto.privateDecrypt(privatePem, Buffer.from(encodeData.toString('base64'), 'base64'));
return decodeData;
}
//私钥加密
function privateEncrypt(data) {
let encodeData = crypto.privateEncrypt(privatePem, Buffer.from(data)).toString('base64');
return encodeData;
}
//公钥解密
function publicDecrypt(encodeData) {
let decodeData = crypto.publicDecrypt(publicPem, Buffer.from(encodeData.toString('base64'), 'base64'));
return decodeData;
}
let sign = getSign('123456');
console.log('sign: ' + sign);
let verify = verifySign('123456',sign);
console.log('verify: ' + verify);
let a = publicEncrypt('aaa');
console.log('公钥加密: ' + a);
let b = privateDecrypt(a);
console.log('私钥解密: ' + b);
let c = privateEncrypt(b);
console.log('私钥加密: ' + c);
let d = publicDecrypt(c);
console.log('公钥解密: ' + d);
分享到:
相关推荐
混合加密JS是用于JavaScript的混合(RSA + AES)加密和解密工具包。 Hybrid Crypto JS结合了RSA和AES加密算法,可以有效地加密和解密大型邮件。 该跨平台库基于 。 Hybrid Crypto JS可以在浏览器,Node.js或React ...
Node.js RSA库基于Tom Wu的jsbn库 纯JavaScript 不需要OpenSSL 产生金钥 支持长消息进行加密/解密 签名和验证 例 const NodeRSA = require ( 'node-rsa' ) ; const key = new NodeRSA ( { b : 512 } ) ; const ...
用纯JavaScript编写! 有关更多信息,请访问或 。安装使用安装: npm install xml-crypto前提条件是必须已安装并且/ bin必须位于系统路径上。 我使用的是1.0.1c版本,但它也可以在较旧的版本上使用。支持的算法规范...
Crypto Demo ...通过非对称的加密算法,...张丹(Conan), 创业者、程序员(Java,R,Javacript/Node.js) weibo:@Conan_Z blog: email: 项目文件 hash.js 哈希算法测试 hmac.js hmac算法测试 cipher.js 加密、解密 signer.js
node.JS的加密模块crypto提供了 HTTP 或 HTTPS 连接过程中封装安全凭证的方法。也提供了 OpenSSL 的哈希,hmac, 加密(cipher), 解密(decipher), 签名(sign) 和 验证(verify) 方法的封装 crypto模块使用方法 ...
cyphrd.js:javascript 加密库 一组加密和散列模块,可与 Node.js、require.js 或直接在浏览器中使用。 模块通常取自其他开源项目(参见文件头),然后更新以改进规范支持(大量单元测试)和性能。 模块 哈希函数 ...
使用Node.js的数字签名,加密 这是使用公钥密码术和加密技术的数字签名的简单实现 用法 $ npm run generate # This will generate public and private keys into the keys folder $ npm run sign # This will sign ...
一个免费且全面的加密和解密工具,其中包含Node.js中的示例代码。 EncryptLab的目的是使开发人员更容易理解每种加密如何与Node.js中的工具和示例代码一起使用。 可用加密列表 贡献 是否想使EncryptLab更完美? ...
具有加密功能的MFS(可变文件系统)JavaScript实现 IPFS可变文件系统JavaScript实现首席维护者目录安装npm > npm i ipfs-mfs-crypto在Node.js中使用const mfs = require ( 'ipfs-mfs-crypto' ) 见和用于加密和解密...
我正在尝试提供广泛的编程语言,实际上我为这些框架提供了解决方案: Java , PHP , C# , Javascript-CryptoJs , NodeJs Crypto , NodeJs node-forge和Python (对于选定的程序),只要该功能是在平台上可用。...
安装git clone https://github.com/dirname/CryptoMagician.gitcd " Crypto Magician "yarn install./node_modules/.bin/electron-rebuildyarn run start 支持算法 消息摘要算法支持算法摘要表哈希名称十六进制长度...
我们希望能够编写在客户端和服务器上都使用加密的Javascript,但是我们不想依赖于加密的Javascript实现。 浏览器中唯一可用的本机加密是 ,这导致我们创建了@peculiar/webcrypto 。 目录 警告 目前,该解决方案应被...
节点-webcrypto-p11 我们希望能够编写在客户端和服务器上都使用加密的Javascript,但是我们不想依赖于加密的... const { Crypto } = require ( "node-webcrypto-p11" ) ; const config = { library : "/usr/local/li
微信支付 OpenAPI SDKThe WeChatPay OpenAPI v2&v3' Smart Development Kit主要功能 使用Node原生crypto实现微信支付APIv3的AES加/解密功能(aes-256-gcm with aad) 使用Node原生crypto实现微信支付APIv3的RSA加/解密...
使用Jest为客户端应用程序测试Webcrypto(React)术语生成根证书(RSA-OAEP) 这是您最有可能在服务器端生成的根密钥。 生成的私钥在服务器上用于读取使用公钥加密的所有消息,该消息将在客户端使用。 生成的私钥...