2020-10-29

笔记 ------ egg

需求:postgressql的密码进行解密连接

目录结构如下

在这里插入图片描述

1.选择用node自带的crypto进行加密解密操作(ps:不用md5的原因是其是不可逆加密,无法进行解密操作)。

我将加密与解密方法放入了config.js中

(1)加密

 // 加密  key:加密密钥,如abcdefgh12345678 pas:密码
  encrypt(password) {
    // iv:初始向量   const config = this.app.config;
    const iv = Buffer.from(config.key, 'utf8');
    // aes-128-cbc算法要求密钥须是16位
    const cipher = crypto.createCipheriv('aes-128-cbc', config.key, iv);
    let enc = cipher.update(password, 'utf8', 'hex');
    enc += cipher.final('hex');
    // 加密后的值
    return enc;
    console.log(enc);
  }

(2)解密

  // 解密 crypted:加密后的串
  decrypt(crypted) {
    // iv:初始向量
    const config = this.app.config;
    const iv = Buffer.from(config.key, 'utf8');
    const decipter = crypto.createDecipheriv('aes-128-cbc', config.key, iv);
    let dec = decipter.update(crypted, 'hex', 'utf8');
    dec += decipter.final('utf8');
    // 解密后的值
    return dec;
  }

注意:
①其中“‘aes-128-cbc’”为加密和解密的算法,二者必须保持一致
②iv为初始向量,加解密也需保持一致,密钥key也需保持一致
③该算法要求密钥和iv都是16字节;

此部分可参考文章:https://www.cnblogs.com/jaxu/p/11649131.html

2.修改密码

在这里插入图片描述
疑问:
1.app.js入口文件中,对于configWillLoad函数,官网说的是:

此时 config 文件已经被读取并合并,但是还并未生效, 这是应用层修改配置的最后时机

但是发现在这里解密并无用,启动时会报错说postgres密码不对,官网给的更改密码例子是mysql,本项目中使用的是sequelize,猜测在合并config后到configWillLoad生命周期函数之前,就会初始化数据库。
2.config.local.js会进入两次,config也合并了两次。

找了很久没有找到以上相关问题的原因或者解决办法,知道以上疑问的小伙伴劳烦来告诉我一下哦,感谢☆⌒(*^-゜)v THX!!!
ps:对于密码进行加密时一定要注意不能输错密码,小心再小心!!!

(题外话:别问我为啥这样提醒,天知道我因为输错密码,导致解密成错误密码,后续一直启动不成功时花了多长时间来解决(≧0≦)!!!!!,最后不小心瞥了一下解密后的密码,整个人都不好了,太坑自己了(⊙﹏⊙),但感谢自己的一瞥!!!于是一怒之下写了这篇笔记给自己提醒!)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值