当前位置: 首页 > news >正文

如何对html文件加密,node代码如何加密?

要用nodejs开发接口,实现远程调用,如果裸奔太危险了,就在网上找了一下nodejs的加密,感觉node-rsa挺不错的,下面来总结一下简单的rsa加密解密用法。

b63df2a47405d21d85e88ac6613bfcfe.png

node代码加密方法如下:

1、初始化环境

新建一个文件夹node-rsa-demo , 终端进入,运行下面命令初始化cd node-rsa-demo

npm init # 一路回车即可

npm install --save node-rsa

2、生成公钥私钥

在 node-rsa-demo下新建一个文件 index.js 写上如下代码var NodeRSA = require('node-rsa')

var fs = require('fs')

function generator() {

var key = new NodeRSA({ b: 512 })

key.setOptions({ encryptionScheme: 'pkcs1' })

var privatePem = key.exportKey('pkcs1-private-pem')

var publicPem = key.exportKey('pkcs1-public-pem')

fs.writeFile('./pem/public.pem', publicPem, (err) => {

if (err) throw err

console.log('公钥已保存!')

})

fs.writeFile('./pem/private.pem', privatePem, (err) => {

if (err) throw err

console.log('私钥已保存!')

})

}

generator();

先在 node-rsa-demo 文件夹下新建一个文件夹 pem 用来存放密钥的,然后执行 node index.js ,会发现在 pem 文件夹下生成了两个文件

private.pem

public.pem

3、加密:

加密 hello world 这个字符串function encrypt() {

fs.readFile('./pem/private.pem', function (err, data) {

var key = new NodeRSA(data);

let cipherText = key.encryptPrivate('hello world', 'base64');

console.log(cipherText);

});

}

//generator();

encrypt();

然后执行 node index.js 终端里会输出一串类似

fH1aVCUceJYVvt1tZ7WYc1Dh5dVCd952GY5CX283V/wK2229FLgT9WfRNAPMjbTtwL9ghVeYD4Lsi6yM1t4OqA== 的base64字符串,这就是用私钥加密后的密文了

4、解密:

把上一步加密获得的密文复制粘贴到下面要解密的方法内function decrypt() {

fs.readFile('./pem/public.pem', function (err, data) {

var key = new NodeRSA(data);

let rawText = key.decryptPublic('fH1aVCUceJYVvt1tZ7WYc1Dh5dVCd952GY5CX283V/

wK2229FLgT9WfRNAPMjbTtwL9ghVeYD4Lsi6yM1t4OqA==', 'utf8');

console.log(rawText);

});

}

//generator();

//encrypt();

decrypt();

执行 node index.js 会发现又拿到 hello world 了

下面通过一段代码看下nodejs加密解密

nodejs是通集成在内核中的crypto模块来完成加密解密。

常用加密解密模块化代码:/**

* Created by linli on 2015/8/25.

*/

var crypto = require('crypto');

//加密

exports.cipher = function(algorithm, key, buf) {

var encrypted = "";

var cip = crypto.createCipher(algorithm, key);

encrypted += cip.update(buf, 'binary', 'hex');

encrypted += cip.final('hex');

return encrypted

};

//解密

exports.decipher = function(algorithm, key, encrypted) {

var decrypted = "";

var decipher = crypto.createDecipher(algorithm, key);

decrypted += decipher.update(encrypted, 'hex', 'binary');

decrypted += decipher.final('binary');

return decrypted

};

此处,只针对可逆加密。

相关文章:

  • 初中使用计算机教学反思,初中信息技术课堂教学反思随笔
  • 微计算机与微处理器入门pdf,微处理器与微计算机系统-西华大学.pdf
  • 武汉大学计算机学院辅导员,武汉大学2021年辅导员拟录名单出炉,多数为名校博士毕业生...
  • 计算机二级试题第12套,2012年计算机二级Access第十二套单选练习题及答案
  • 四川省一级计算机考试,四川省计算机等级考试一级模拟试题(一)
  • 长春吉林大学计算机系奖状,校工会慰问五一劳动奖章、奖状以及巾帼标兵岗获奖个人和集体...
  • 计算机绘画社团方案,小学电脑绘画社团活动方案(全套)解说.doc
  • S在计算机函数公式符号,下列给定程序中,fun函数的功能是:求表达式s=aa…aa-…-aaa-aa..._考试资料网...
  • 计算机没小键盘,笔记本没有num按键怎么关闭数字小键盘_教你关闭笔记本数字小键盘的方法...
  • oppo手机计算机的隐藏功能介绍,OPPO手机有什么隐藏功能?这一波强大又实用的功能了解一下~...
  • 二甲医院云服务器,为什么说智慧医院全场景升级从超能云终端开启?
  • wsyy应用程序中的服务器错误,wsYY的博客
  • 异速联服务器配置系统管理员,异速联V6.2.4.0正式版全新发布
  • 无线鼠标 桌面服务器,你可能不知道 桌面总是乱糟糟的很可能是因为你没买对鼠标...
  • 魔兽正式服5区服务器互通信息,魔兽世界怀旧服付费转服能跨区吗
  • 实现windows 窗体的自己画,网上摘抄的,学习了
  • 【跃迁之路】【699天】程序员高效学习方法论探索系列(实验阶段456-2019.1.19)...
  • Docker 笔记(2):Dockerfile
  • Java 9 被无情抛弃,Java 8 直接升级到 Java 10!!
  • JavaWeb(学习笔记二)
  • magento 货币换算
  • Netty+SpringBoot+FastDFS+Html5实现聊天App(六)
  • tensorflow学习笔记3——MNIST应用篇
  • TiDB 源码阅读系列文章(十)Chunk 和执行框架简介
  • ucore操作系统实验笔记 - 重新理解中断
  • Vue 动态创建 component
  • windows-nginx-https-本地配置
  • 前端临床手札——文件上传
  • 前端每日实战 2018 年 7 月份项目汇总(共 29 个项目)
  • 使用 Xcode 的 Target 区分开发和生产环境
  • 用jquery写贪吃蛇
  • 用Node EJS写一个爬虫脚本每天定时给心爱的她发一封暖心邮件
  • 职业生涯 一个六年开发经验的女程序员的心声。
  • 3月7日云栖精选夜读 | RSA 2019安全大会:企业资产管理成行业新风向标,云上安全占绝对优势 ...
  • ​2020 年大前端技术趋势解读
  • ​猴子吃桃问题:每天都吃了前一天剩下的一半多一个。
  • #laravel 通过手动安装依赖PHPExcel#
  • (c语言版)滑动窗口 给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度
  • (附源码)php投票系统 毕业设计 121500
  • (收藏)Git和Repo扫盲——如何取得Android源代码
  • (一)VirtualBox安装增强功能
  • (一)使用Mybatis实现在student数据库中插入一个学生信息
  • (转载)CentOS查看系统信息|CentOS查看命令
  • **python多态
  • .bat批处理(八):各种形式的变量%0、%i、%%i、var、%var%、!var!的含义和区别
  • .bat批处理(四):路径相关%cd%和%~dp0的区别
  • .NET Core Web APi类库如何内嵌运行?
  • ??javascript里的变量问题
  • @Conditional注解详解
  • @DependsOn:解析 Spring 中的依赖关系之艺术
  • @ModelAttribute使用详解
  • @RequestBody与@ModelAttribute
  • @selector(..)警告提示
  • [ 隧道技术 ] 反弹shell的集中常见方式(二)bash反弹shell
  • []使用 Tortoise SVN 创建 Externals 外部引用目录