将本地项目发布到服务器 和 数据加密的方法:MD5 和 bcrypt 加密算法

将博客发布到服务器

运行window + R,输入:mstsc打开远程桌面的链接面板

填写计算机的远程ID

如果是买的崭新的服务器,需要手动下载node环境和PHPstudy等软件

  1. 将本地的项目(除node_modules之外)的所有代码,放入新文件夹中,然后打包压缩。

    将本地的数据库文件,也复制粘贴到远程服务器

  2. 将压缩包上传到远程服务器(将压缩包复制粘贴到远程服务器桌面)

    将数据库文件,导入数据库中

    在远程桌面:打开项目,运行:npm install 安装依赖

    在远程桌面运行项目:node app.js

数据加密的方法:MD5 和 bcrypt 加密算法

1.MD5 的特性

  1. MD5 是一种加密算法,在调用这个算法的时候,提供一个密码的明文, 调用的结果,得到一个 32 位长度的密文;
  2. **MD5 算法的特性:**相同的字符串,如果多次调用 md5 算法,得到的结果,完全一样;
  3. MD5 算法,无法被逆向解密
  4. 但是,基于 md5 算法的第二个特性,我们可以进行碰撞暴力破解;(MD5 存在被暴力破解的安全性问题)
  5. 为了解决 简单的明文密码,被 md5 加密后,通过 暴力破解的安全性问题, 然后就出现了加盐的MD5加密;
  6. 目前,md5的暴力破解,又升级了,升级到了 彩虹表
  7. 由于彩虹表出现,我们推荐大家,在存储网站密码的时候,使用 bcrypt 加密算法,得到加密之后的密文进行存储;

2.bcrypt 加密算法

  1. 在调用加密算法的时候,需要手动提供一个 幂次;
  2. 调用加密算法,得到的加密结果格式:$版本号$循环的幂次$22位的随机盐 31位的密文
    • 加密的随机盐加密的幂次,和加密算法的版本号已经被存储到了真正的密文中;

3.项目中使用 bcrypt 的步骤

  1. 运行 npm i node-pre-gyp -g

  2. 在项目根目录中,打开终端,运行 cnpm install bcrypt -S

  3. 导入 bcrypt

    // 导入加密的模块
    const bcrypt = require('bcrypt')
    
  4. 定义幂次:

    // 定义一个 幂次
    const saltRounds = 10    // 2^10
    
  5. 调用 bcrypt.hash() 加密:

    // 加密的方法
    bcrypt.hash('123', saltRounds, (err, pwdCryped) => {
       console.log(pwdCryped)
    })
    
  6. 调用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;
      */
      
    })
    
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

落花流雨

你的鼓励将是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值