将博客发布到服务器
运行window + R,输入:
mstsc
打开远程桌面的链接面板填写计算机的远程ID
如果是买的崭新的服务器,需要手动下载node环境和
PHPstudy
等软件
-
将本地的项目(除node_modules之外)的所有代码,放入新文件夹中,然后打包压缩。
将本地的数据库文件,也复制粘贴到远程服务器
-
将压缩包上传到远程服务器(将压缩包
复制粘贴
到远程服务器桌面)将数据库文件,导入数据库中
在远程桌面:打开项目,运行:
npm install
安装依赖在远程桌面运行项目:
node app.js
数据加密的方法:MD5 和 bcrypt 加密算法
1.MD5 的特性
- MD5 是一种加密算法,在调用这个算法的时候,提供一个密码的明文, 调用的结果,得到一个 32 位长度的密文;
- **MD5 算法的特性:**相同的字符串,如果多次调用 md5 算法,得到的结果,完全一样;
- MD5 算法,无法被逆向解密;
- 但是,基于 md5 算法的第二个特性,我们可以进行碰撞暴力破解;(MD5 存在被暴力破解的安全性问题)
- 为了解决 简单的明文密码,被 md5 加密后,通过 暴力破解的安全性问题, 然后就出现了加盐的MD5加密;
- 目前,md5的暴力破解,又升级了,升级到了
彩虹表
; - 由于彩虹表出现,我们推荐大家,在存储网站密码的时候,使用
bcrypt
加密算法,得到加密之后的密文进行存储;
2.bcrypt 加密算法
- 在调用加密算法的时候,需要手动提供一个
幂次
; - 调用加密算法,得到的加密结果格式:
$版本号$循环的幂次$22位的随机盐 31位的密文
- 加密的
随机盐
和加密的幂次
,和加密算法的版本号
已经被存储到了真正的密文中;
- 加密的
3.项目中使用 bcrypt 的步骤
-
运行
npm i node-pre-gyp -g
-
在项目根目录中,打开终端,运行
cnpm install bcrypt -S
-
导入
bcrypt
// 导入加密的模块 const bcrypt = require('bcrypt')
-
定义幂次:
// 定义一个 幂次 const saltRounds = 10 // 2^10
-
调用
bcrypt.hash()
加密:// 加密的方法 bcrypt.hash('123', saltRounds, (err, pwdCryped) => { console.log(pwdCryped) })
-
调用
bcrypt.compare()
对比密码是否正确:// 对比 密码的方法 bcrypt.compare('123', '$2b$10$i1ufUKnC9fXTsF9oqqvLMeDnpNfYIvhyqKRG03adiebNFPkjW3HPW', function(err, res) { console.log(res) /* 内部对比的过程: 1. 先获取 输入的明文 2. 获取输入的密文 2.1 从密文中,解析出来 bcrypt 算法的 版本号 2.2 从密文中,解析出来 幂次 2.3 从密文中,解析出来前 22 位 这个随机盐 3. compare 方法内部,调用 类似于 hash 方法 把 明文,幂次,随机盐 都传递进去 最终得到正向加密后的密文 4. 根据最新得到的密文,和 compare 提供的密文进行对比, 如果相等,则 返回 true ,否则返回 false; */ })