这里不讨论密码的生成,生成RSA密码请参考https://www.imqianduan.com/server/RSA-public-private.html
背景: react项目
前端RSA
加密使用jsencrypt
,安装:
npm install jsencrypt --save
https://www.npmjs.com/package/jsencrypt
使用,直接上代码
import JSEncrypt from 'jsencrypt';
const Encrypt = new JSEncrypt();
let publicKey = '';
publicKey += '-----BEGIN PUBLIC KEY-----';
publicKey += 'FJDLSKAJKLJ3L2J49FIDSAJFLKSDJAK32FKJDSAFJKDKFKDFJKDSLAFLSAFDKSAFKDASLFD';
publicKey += 'FJDLSKAJKLJ3L2J49FIDSAJFLKSDJAK32FKJDSAFJKDKFKDFJKDSLAFLSAFDKSAFKDASLFD';
publicKey += 'FJDLSKAJKLJ3L2J49FIDSAJFLKSDJAK32FKJDSAFJKDKFKDFJKDSLAFLSAFDKSAFKDASLFD';
publicKey += 'FJDLSKAJKLJ3L2J49FIDSAJF';
publicKey += '-----END PUBLIC KEY-----';
export default {
/**
* 加密一个参数
* @param {*} value 需要加密的值
*/
encrypt(value) {
Encrypt.setPublicKey(publicKey);
return Encrypt.encrypt(value);
},
};
注意:
背景:nodejs项目
jsencrypt
是前端框架,不要偿试在后端使用,后台我们使用node-rsa
,安装:
https://www.npmjs.com/package/node-rsa
npm install node-rsa --save
后台RSA的目录结构
.
|-- pem
| |-- rsa_private_key.pem
| `-- rsa_public_key.pem
`-- rsa.js
后台代码(rsa.js):
'use strict';
const fs = require('fs');
const path = require('path');
const RSA = require('node-rsa');
// RSA解密
const keyPath = path.resolve(__dirname, './pem/rsa_private_key.pem');
const privatePem = fs.readFileSync(keyPath).toString();
const privateKey = new RSA(privatePem);
// 转成pkcs1格式
privateKey.setOptions({ encryptionScheme: 'pkcs1' });
module.exports = {
/**
* 解密
* @param {*} value 需要解密的值
*/
decrypt(value) {
let data = value;
// 使用try...catch...捕获解密失败错误(如公钥错误),返回controller处理
try {
data = privateKey.decrypt(value, 'utf8');
return data;
} catch (err) {
return false;
}
},
};
后台调用:
const RSA = require('./rsa/rsa');
// 要解密使用RSA公钥加密的password字段
RSA.decrypt(password)
Mongodb批量操作,如批量删除,批量修改字段
http或https不带www的域名301跳转到带www的URL
gcc版本老旧,经常会碰到的问题:/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found。不要在网上找各种方法,直接升级gcc吧
error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by serv
mongoose条件操作符
redis配置多个端口,redis启动多个实例
linux如何挂载新买的硬盘?
vim编辑nginx conf文件时,设置高亮/显示行号
vi/vim打开文件提示Found a swap file by the name
linux报错:C++ compiler too old, need g++ 4.9.4 or clang++ 3.4.2 (CXX=g++)
linux下如何安装nodejs
linux下安装 redis,以及相关使用
linux下通过yum安装mongodb
需要跨域的项目,很多时候每次都会发送OPTIONS请求,能不能优化呢?
mongodb多表关联查询
角色、权限、用户之间的关系,以及如何设计
这样形如 A.B.C 的字符串时能敏感地认出这是使用了 jwt。发了这两篇文章后,有不少读者在文末留言,表达了对 jwt 使用方式的一些疑惑,以及到底哪些场景适合使用 jwt。我并不是 jwt 方面的专家,和不少读者一样,起初研究时我也存在相同疑惑,甚至在逐渐接触后产生了更大的疑惑,经过这段时间项目中的使用和一些自己思考,把个人的总结整理成此文。
go语言实现token自动续期
RSA加密的玩法
捕获save报错,返回controller
win10下安装nginx,配置返向代理
ERROR 9076 nodejs.SequelizeConnectionError: Client does not support authentication protocol requested by server; consider upgrading MySQL client
RPM是RedHat Package Manager(RedHat软件包管理工具)类似Windows里面的“添加/删除程序
Ubuntu 16.04 发布时,一个引人注目的新特性便是 apt 命令的引入。其实早在 2014 年,apt 命令就已经发布了第一个稳定版,只是直到 2016 年的 Ubuntu 16.04 系统发布时才开始引人关注。随着 apt install package 命令的使用频率和普遍性逐步超过 apt-get install package,越来越多的其它 Linux 发行版也开始遵循 Ubuntu 的脚步,开始鼓励用户使用 apt 而不是 apt-get。
centos查看环境变量与设置环境变量在使用过程中很常见,本文整理了一些常用的与环境变量相关的命令,感兴趣的朋友可以参考下希望对你有所帮助
linux cenos下安装oh my zsh,oh my zsh 用于管理zsh配置,使shell界面更美观。 Zsh 是一款功能强大终端(shell)软件,既可以作为一个交互式终端,也可以作为一个脚本解释器。它在兼容 Bash 的同时 (默认不兼容,除非设置成 emulate sh) 还有提供了很多改进。
以腾讯云为例,配置nginx,实现https访问
nginx设置二级域名指向子目录
发现ip访问比nginx快多了,知道nginx出问题了~ 得给他优化优化。优化后由原来的2.7s打开,到600ms打开~nginx优化还是有用的
通过nginx开启gzip设置
通过Nginx反向代理,在一个云服务器上绑定多个域名,不同的域名访问不同的目录,端口
如何在Linux(CentOS 7)上安装Nginx,作为反向代理服务器。
nginx服务端实现CORS跨域配置
UUID,是Universally Unique Identifier的缩写,UUID出现的目的,是为了让分布式系统可以不借助中心节点,就可以生成UUID来标识一些唯一的信息;
命令从指定点开始将 File 参数指定的文件写到标准输出。如果没有指定文件,那么会使用标准输入。Number 变量指定将多少单元写到标准输出。Number 变量的值可以是正的或负的整数。如果值的前面有 +(加号),从文件开头指定的单元数开始将文件写到标准输出。如果值的前面有 -(减号),那么从文件末尾指定的单元数开始将文件写到标准输出。如果值前面没有 +(加号)或 -(减号),那么从文件末尾指定的单元号开始读取文件
今天想对一个问题进行分析和讨论,就是关于爬虫对网站页面爬取的问题,有些网站通过爬虫去采集其它的网站页面信息作为己用,大量的爬取行为会对web服务器有比较性能有影响,主要的表现就是会变得很慢。
将不带www的域名301重定向到带www的域名,利于SEO