使用公钥和私钥的加密和解密:

    • 非对称加密的关键在于 有 公钥 / 私钥
      用法:
      a.生成一对公钥私钥
      b.公钥加密 -> 对应私钥解密
      c.私钥加密 -> 对应公钥解密

    • 非对称加密的常见应用方式
      a.公钥加密,发给私钥拥有者,私钥解密获得明文。其它人用公钥解不开
      b.私钥加密(签名)

    • 公钥的传输(混合加密)
      a.使用对称加密算法发布公钥
      b.使用对称加密算法解密公钥,再使用公钥加密明文,发给私钥拥有者

注:不能 公钥加密公钥解密 或 私钥加密私钥解密

var NodeRSA = require("node-rsa");

/**
* 1.使用 node-rsa 生成 公钥和私钥,并进行服务端测试
* @param pkcsType :pkcs版本(pkcs1/pkcs8),默认为 pkcs8
*/
function generateKeyPair(pkcsType,pkcsSize) {
pkcsType = pkcsType ? pkcsType : 'pkcs8';//不为空则 设置为传入参数,为空则 设置为 pkcs8
console.log('pkcsType=' + pkcsType);
pkcsSize = pkcsSize || 512;
//1.创建RSA对象,并指定 秘钥长度
var key = new NodeRSA({ b: pkcsSize });
key.setOptions({ encryptionScheme: 'pkcs1' });//指定加密格式 //2.生成 公钥私钥,使用 pkcs8标准,pem格式
var publicPem = key.exportKey(pkcsType+'-public-pem');//制定输出格式
var privatePem = key.exportKey(pkcsType + '-private-pem');
//console.log(key.$options);
console.log(pkcsType+'公钥:\n',publicPem);
console.log(pkcsType+'私钥:\n', privatePem); //---------------------测试1:服务端私钥加密公钥解密------------------------ //3.使用 私钥 加密 数据,并指定 字符编码 和 字符集
var encryData = key.encryptPrivate('服务端测试 -> jameszou love code~~~', 'base64','utf8');
console.log('\n私钥加密后的数据:\n', encryData); //加密后数据为 base64 编码 //4.使用 公钥 解密 数据,并指定字符集
var decryptData = key.decryptPublic(encryData,'utf8');
console.log('\n公钥解密后的数据:\n', decryptData); //---------------------测试2:服务端加载公钥后解密------------------------
//1.创建RSA对象,并指定 秘钥长度
var key3 = new NodeRSA({ b: pkcsSize });
//2.导入 公钥,并指定使用 pkcs标准,pem格式
key3.importKey(publicPem, pkcsType+'-public-pem'); //3.使用 公钥 解密数据
var decrypted = key3.decryptPublic(encryData, 'utf8');
console.log('\n使用公钥解密后的数据:\n',decrypted);
} generateKeyPair();

  

使用  aes加密,是属于,指定key加密,还是用key加密,没有公钥和私钥的区别。

但是:aes加密的速度比rsa加密要快几百倍

node-rsa 非对称加密和解密的更多相关文章

  1. CryptoAPI与openssl RSA非对称加密解密(PKCS1 PADDING)交互

    (以下代码中都只做测试用,有些地方没有释放内存...这个自己解决下) 1.RSA非对称的,首先提供一个供测试用的证书和私钥的数据 1)pem格式的证书和私钥(公私钥是对应的)的base64编码 voi ...

  2. javascript版前端页面RSA非对称加密解密

    最近由于项目需要做一个url传参,并在页面显示参数内容的需求,这样就会遇到一个url地址可能会被假冒, 并传递非法内容显示在页面的尴尬情况 比如xxx.shtml?server=xxx是坏人& ...

  3. java结合node.js非对称加密,实现密文登录传参——让前后端分离的项目更安全

    前言   在参考互联网大厂的登录.订单.提现这类对安全性操作要求较高的场景操作时发现,传输的都是密文.而为了目前项目安全,我自己负责的项目也需要这方面的技术.由于,我当前的项目是使用了前后端分离技术, ...

  4. Atitit RSA非对称加密原理与解决方案

    Atitit RSA非对称加密原理与解决方案 1.1. 一.一点历史 1 1.2. 八.加密和解密 2 1.3. 二.基于RSA的消息传递机制  3 1.4. 基于rsa的授权验证机器码 4 1.5. ...

  5. RSA非对称加密Java实现

    原文 加密基础方法类 import java.security.MessageDigest; import sun.misc.BASE64Decoder; import sun.misc.BASE64 ...

  6. 前端js,后台python实现RSA非对称加密

    先熟悉使用 在后台使用RSA实现秘钥生产,加密,解密; # -*- encoding:utf-8 -*- import base64 from Crypto import Random from Cr ...

  7. 前后端数据加密传输 RSA非对称加密

    任务需求:要求登陆时将密码加密之后再进行传输到后端. 经过半天查询摸索折腾,于是有了如下成果: 加密方式:RSA非对称加密.实现方式:公钥加密,私钥解密.研究进度:javascript与java端皆已 ...

  8. RSA javascript加密 lua解密

    一个在线RSA非对称加密解密,可以用这个地址生成公钥和私钥 https://blog.zhengxianjun.com/online-tool/rsa/ javascript加密 jsencrypt. ...

  9. php RSA非对称加密 的实现

    基本概念 加密的意义 加密的意义在于数据的传输过程中,即使被第三方获取到传输的数据,第三方也不能获取到数据的具体含义. 加密方式分为对称加密和非对称加密 什么是对称加密? 对称加密只使用一个秘钥,加密 ...

  10. ssh rsa 非对称加密 基本原理

    我们常用的ssh 免密登陆是用了 非对称加密的rsa算法(最为常用),与对称加密的相比会慢一些,但是更安全.秘钥长度超过768位无法破解. 默认长度是2048位(无法破解,非常安全) ssh-keyg ...

随机推荐

  1. 遍历DOM打平

    html 模板 <div class="box"> <p>1</p> <p>2</p> <div> < ...

  2. WIN7/XP用注册表关联指定后缀名和打开程序(手动【图文】和C编程两种实现)

    前言: 本文是基本原理介绍和手动的操作.程序实现该功能在http://blog.csdn.net/arvon2012/article/details/7839556,同时里面有完整代码的下载. 今天在 ...

  3. 洛谷P1433 吃奶酪【dfs】【剪枝】

    题目:https://www.luogu.org/problemnew/show/P1433 题意: 给定n个坐标,要求从(0,0)开始走遍所有点,最少经过的路程. 思路: 刚开始想像数字三角形一样适 ...

  4. {Django基础九之中间件} 一 前戏 二 中间件介绍 三 自定义中间件 四 中间件的执行流程 五 中间件版登陆认证

    Django基础九之中间件 本节目录 一 前戏 二 中间件介绍 三 自定义中间件 四 中间件的执行流程 五 中间件版登陆认证 六 xxx 七 xxx 八 xxx 一 前戏 我们在前面的课程中已经学会了 ...

  5. [No0000DE]C# XmlHelper XML类型操作 类封装

    using System; using System.Data; using System.IO; using System.Text; using System.Threading; using S ...

  6. 【紫书】Urban Elevations UVA - 221 离散化

    题意:给你俯视图,要求依次输出正视图中可以看到的建筑物 题解:任意相邻的x间属性相同,所以离散化. 坑:unique只能对数组用.下标易错 list不能找某元素的next.用了个很麻烦的处理 数组: ...

  7. Flannel - 原理

    Flannel GitHub 地址 Flannel 是 Kubernetes 中常用的网络配置工具,用于配置第三层(网络层)网络结构. 如何工作Flannel 需要在集群中的每台主机上运行一个名为 f ...

  8. gateone安装使用

    下载地址 https://github.com/liftoff/GateOne unzip GateOne-master.zip cd GateOne-master/ python setup.py ...

  9. Exactly-Once 投递语义

    小结: 1.Exactly-Once 是指发送到消息系统的消息只能被消费端处理且仅处理一次,即使生产端重试消息发送导致某消息重复投递,该消息也在消费端也只被消费一次. 消息队列 RocketMQ &g ...

  10. coreseek搜索

    参考文档地址:http://github.tiankonguse.com/doc/sphinx/