const fs = require('fs'), crypto = require('crypto'); // 从文件加载key: function loadKey(file) { // key实际上就是PEM编码的字符串: return fs.readFileSync(file, 'utf8'); } // let // prvKey = loadKey('../cert/LHpem/private_key_pkcs8.pem'), // pubKey = loadKey('../cert/LHpem/public_key.pem'), // // message = 'Hello, world! Hello, world!Hello, world!Hello, AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222'; message = '1'; // let prvKey = '-----BEGIN PRIVATE KEY-----\n' + 'MIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBAMdkm4z1pxJJ6iw0EcpmYUllLZ647s1tR3zybHA5NM9Sat/3X2YU3voWCWjkAak31cKeIheAQahQ//26HUnQIWidp7164HxArX7HuhtHy3QMJXgVAA/jiS5lBIEizqhL8qlSVpa0Ksd23WyJoQCg3LCxOynPcl30Ey4mxyrb6RC3AgMBAAECgYEAlg6ABehFkLzxr8yL6v97jcnIOGBCz3TDTSQAOcDDnpcO+XhoYiGo4Rq+gCK/oUL06x8o1vjd8LbswF1Vd1xcFtOaOVGihp+wWgmKHEgf9hGhI/iu7kUohknHNnPdkqFNGc0BZ2rKlxa89vTpZ+RLkqHZwRnllEZpFMMO3Bod27ECQQDvK6LTEBXgJHIwGo9nJ91NIPASr2GYYm5STn2II/WG0qbeuUqO0VUmSPIaFQL0/69+mLk3gfqIAxiYbcjn82wfAkEA1Wxt5BI8FXnRCDGY5N41jnGseR7ngK0+bcE1cVxbESgchId4IQqP6MJ1Ccu8faJo3tEI+kZCRpXuLifj+DdIaQJBAOZ5VFSz4YC3XlpAngQ4BCf5H5/B5fhkkg86l/mDPW0IvclPISvzSWy1Sqgbq1fQtJr4LTPySyyaXy80TDBJAN0CQD3dSVlkI8CB6CK85bnp45JfxwPw/mAhV8hOyiQLBmbJvsJ31k2VlzN8MprdUM0GJ+n2o+iQNyPoz/rXG1DXDYkCQQDT7ZzUK4Vi6FlO970oi2aAm9Jf09ilU2dEPdKD2iWdZUPPl8IEvqPlN0QjMlR1cqv3FnF8PcySEeD3Yb+BnE7k' + '\n-----END PRIVATE KEY-----'; // let pubKey = '-----BEGIN PUBLIC KEY-----\n' + 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDHZJuM9acSSeosNBHKZmFJZS2euO7NbUd88mxwOTTPUmrf919mFN76Fglo5AGpN9XCniIXgEGoUP/9uh1J0CFonae9euB8QK1+x7obR8t0DCV4FQAP44kuZQSBIs6oS/KpUlaWtCrHdt1siaEAoNywsTspz3Jd9BMuJscq2+kQtwIDAQAB' + '\n-----END PUBLIC KEY-----'; let prvKey = '-----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 pubKey = '-----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(prvKey, '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(pubKey, sign, 'base64') } catch(err) { console.log('veriSign err', err) } } // 使用私钥加密: let enc_by_prv = crypto.privateEncrypt(prvKey, Buffer.from(message, 'utf8')); // let enc_by_prv = crypto.privateEncrypt(prvKey, Buffer.from(message)).toString('base64'); console.log('私钥加密: ' + enc_by_prv.toString('hex')); // 公钥解密 let dec_by_pub = crypto.publicDecrypt(pubKey, enc_by_prv); console.log('公钥解密: ' + dec_by_pub.toString('utf8')); // 使用公钥加密: let enc_by_pub = crypto.publicEncrypt(pubKey, Buffer.from(message, 'utf8')); console.log('公钥加密: ' + enc_by_pub.toString('hex')); // 使用私钥解密: let dec_by_prv = crypto.privateDecrypt(prvKey, enc_by_pub); console.log('私钥加密: ' + dec_by_prv.toString('utf8')); // 私钥签名 let sign = getSign('aaaa'); console.log('sign: ' + sign); // 公钥验签 let veriSign = verifySign('aaaa', sign); console.log('veriSign: ' + veriSign);
相关推荐
Node.js RSA库基于Tom Wu的jsbn库 纯JavaScript 不需要OpenSSL 产生金钥 支持长消息进行加密/解密 签名和验证 例 const NodeRSA = require ( 'node-rsa' ) ; const key = new NodeRSA ( { b : 512 } ) ; const ...
前端开源库-node-rsanode rsa,node.js rsa库
混合加密JS是用于JavaScript的混合(RSA + AES)加密和解密工具包。 Hybrid Crypto JS结合了RSA和AES加密算法,可以有效地加密和解密大型邮件。 该跨平台库基于 。 Hybrid Crypto JS可以在浏览器,Node.js或React ...
用纯JavaScript编写! 有关更多信息,请访问或 。安装使用安装: npm install xml-crypto前提条件是必须已安装并且/ bin必须位于系统路径上。 我使用的是1.0.1c版本,但它也可以在较旧的版本上使用。支持的算法规范...
使用 Node.js 的基于云的电子健康记录概念后端使用的库: 用于路由、应用逻辑等的用于使用 node 访问 sqlite 用于验证用户用于 RSA 公钥/私钥 OpenSSL 绑定的 用于生成二维码的二维码前端用到的库: 用于扫描二维码...
EncryptLab的目的是使开发人员更容易理解每种加密如何与Node.js中的工具和示例代码一起使用。 一个免费且全面的加密和解密工具,其中包含Node.js中的示例代码。 EncryptLab的目的是使开发人员更容易理解每种...
RSA、AES 加解密,浏览器端 JS 加密,服务端 nodejs、java 解密。 加解密介绍 加密算法分对称加密和非对称算法,其中对称加密算法的加密与解密密钥相同,非对称加密算法的加密密钥与解密密钥不同,此外,还有一类不...
这是针对使用io.js / node.js的人员的,但是就生成和测试证书而言,这些是与您在任何语言中都使用过的openssl命令完全相同的命令。 ScreenCast 参见 请参阅的完整文章。 零配置示例 克隆并运行-就这么简单。 克隆...
设置服务器安装node.js依赖项npm install 为https生成证书openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365 如果要在移动设备上进行测试,请确保使用“ localhost”作为通用名称或您的...
手表.js 这是一个 node.js 脚本,用于监视本地文件并在远程服务器上保持更新。 它需要 、 rsync和一个允许通过SSH 密钥进行无密码登录的服务器。 watch.js source destination -i, --identity=ARG Specify id_rsa ...
TLS.js JavaScript 中的 TLS 协议实现。安装 npm install tls . js用法 var tls = require ( 'tls.js' ) ;tls . createHTTPServer ( { key : fs . readFileSync ( __dirname + '/test/keys/key.pem' ) , cert : fs ....
节点库的低级 Node.js 绑定 目前这个项目只关心 libssh 提供的服务器功能的一个子集。 客户端功能可能会在将来添加(如果您愿意,可以邀请您贡献!)。 您可以在 npm 中以ssh 的形式找到它(版本 0.0.1 是具有较旧 ...
节点-rsa-sign node.js 中的简单文档/有效负载签名和验证
能力 通过安全通信通道(SSL)与在线收银员进行交互 使用发件人的私钥对邮件进行SHA256-RSA签名 创建符合OrangeDate的检查 获取先前发送的支票的状态 创建更正检查安装该库需要Node.js版本或更高版本。 使用: $ ...
适用于node.js的W3C XML加密实现( ) 支持节点> = 8用法npm install xml-encryption加密var xmlenc = require ( 'xml-encryption' ) ;var options = { rsa_pub : fs . readFileSync ( __dirname + '/your_rsa.pub' ...
用于mixin.one的Node.js SDK 按照mixin开发人员文档创建您的mixin应用。 单击按钮“单击以生成新的会话”。 现在,您将拥有机器人会话的秘密。 6位数字是您的资产PIN。UUID是新的会话ID。第三行是加密的PIN_TOKEN...
具有HTTPS支持的微型但功能齐全的Node.js零依赖静态文件服务器。 安装 通过npm: npm install --save pico-static-server 例子 您可以通过运行立即开始 node ./examples/pico-http-server.js 假设您已将内容放入./...
node-ssh-agent是绑定到“纯” node.js的SSH代理协议的客户端。 目前,支持的操作是“列表键”和“签名数据”(在SSH中,这是requestIdentities和sign 。 用法 var SSHAgentClient = require('ssh-agent'); var ...
Node.js express mongodb pm2 下面以腾讯云主机(centos)为例 安装Node.js yum install nodejs 也可以安装nvm,用nvm管理nodejs版本 安装git yum install git 连接到远程代码库 以github为例: 配置用户信息 git...
节点-rsa-pem-来自-mod-exp 根据Modulus和Exponent值创建RSA公钥PEM。 没有依赖于其他模块的使用。 这使您可以使用模数/指数值来验证有符号值。 原始代码基于的答案。安装 npm install rsa-pem-from-mod-exp用法 //...