nodejs 前后端数据加密方案

nodejs 前后端数据加密方案

前言

即时没有深入研究过密码学,但是对于数据加密,我想应该很多同学都有所接触吧。

虽然对于前端来说,其实数据加密的意义并不大。你代码都给人家了,只要有技术,有耐心,破解就只是时间的问题了。

在对待前端加密的态度上面,我始终秉承着一句话:“防小人,不防君子”。

但是奈何,很多时候,你不想做这么白费心力的事情,但是老板不答应。

我本将心向明月,奈何明月照沟渠。

很多时候,在工作中,都是人在江湖,身不由己!

之前在工作中曾经有这方面的需求,因此稍微研究了下。

如何加密

对于加密的情形,我们需要区分好几种情况,比如是对数据进行加密呢,还是对服务器请求地址的 path 进行加密。

虽然应用的情况不同,但是解决的思路都是大同小异的。

最初级的方案当然是,自己写个简单的加密算法,比如数据是 “1234567890”,我做一个映射,映射到 ‘0987654321’,将顺序打乱,一般就很难看出数据的原格式是什么了,除非别人知道我的映射规则。

上面的加密方案几乎是所有数据加密的基础原理,毫不夸张的说,无出其右。

但是我们的初级方案有一个致命的缺点,它太基础了,我们只是考虑到了数据中数字的情况,但是一旦数据中出现别的字符,比如中文、英文字符、希腊字母,我们上面的映射方法就抓瞎了。

我们当然可以进一步对我们的数据映射规则进行扩充,但是这个构成前人早就给我们做好了,因为我们大可不必自己冲头开始造这么基础的轮子。

这就跟盖房子一样,我们可以从烧制砖块开始干,也可以选择购买成品砖块,加快我们的建造速度。

所以,现在我们应该明白了,加密的关键是要有一套好的加密算法,我们直接拿来用就行了。

常见的加密算法有:DES加密算法、AES加密算法、RSA加密算法、Base64加密算法、MD5加密算法、SHA1加密算法、XXXTEA加密算法等等。

对于这些算法,感兴趣的同学,可以自己查找资料,去深入的学习其原理。

当然,对其我们只需要有个基本的了解就行了,不推荐太过深入,甚至于想自己去实现一套。

有这个研究的想法当然是好的,但是不推荐具体去行动,不仅费时还费心力健壮性还不行,等你研究好了,老板可能就请你打包离开公司了。

况且,前端本身就有非常成熟的开源工具:crypto-js,我们直接拿来用就行了。

对应的 nodejs 后端,当然也可以用这个工具包,但是更好的选择是采用 nodejs 原生支持的 crypto,用法其实也大同小异。

后端(nodejs)

比如我们想采用 aes-128-cbc 加密算法,可以像下面这和么用:

/**
 * 加密
 * @param {string} data 原文
 * @param {string} key CipherKey
 * @param {string} iv
 */
const aesEncrypt = (data, key = global._config.secretKey, iv = global._config.secretIv) => {
   
  const cipher = crypto.createCipheriv('aes-128-cbc', key, iv);
  let crypted = cipher.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值