JavaScript nodeJS base64加密解密url参数

为了保证全段传递都后端的数据安全性,比如用户登录时输入的密码,在post发送请求中可能会直接暴露了明文。因此可能需要前端进行相应的加密传递到后端,再由后端进行解密后再继续操作。

我使用base64的加密方式对密码进行加密,不过大家都知道base64很容易就被破解了,因此,我会替换掉几个base64生成字符串中的字母,这样就可以达到别人很难破解的目的了。具体直接看代码!


//利用base64加密传输数据
function base64Encryption(str) {
let base64 = Buffer.from(str, 'utf-8').toString('base64')
// 把base64源数据中的M与Q替换成其他字符串,防止别人破解
let base64Confusion = base64.replace(/\M/, '=J=')
base64Confusion = base64Confusion.replace(/\Q/, '=V=')
return base64Confusion
}
function base64Decrypt(str) {
// 先把base64混淆后的字符串转换为正常额base64字符串,在进行解密
let base64 = str.replace(/=J=/, 'M')
base64 = base64.replace(/=V=/, 'Q')
return Buffer.from(base64, 'base64').toString('utf-8')
}
// 此加密不仅可以用于用户密码加密,也可以用于url传参加密
// 一下是加密一般字符串
var data = '123m你好'
console.log('加密:', base64Encryption(data))
console.log('解密:',base64Decrypt(base64Encryption(data)))

// 一下是加密url传参,如url为http://localhost/users?userName=Jack&&password=1234567890
var userName = 'Jack'
var password = '1234567890'
console.log(`加密: http://localhost/users?userName=${base64Encryption(userName)}&&password=${base64Encryption(password)}`)
// 后端解码
console.log(`解密: http://localhost/users?userName=${base64Decrypt(base64Encryption(userName))}&&password=${base64Decrypt(base64Encryption(password))}`)
// 我们可以这样进行加密连接参数的字符串, 比如字符串是userName=Jack&&password=1234567890
var params = `userName=${userName}&&password=${password}`
console.log(`加密:http://localhost/users?data=${base64Encryption(params)}`)
// 后端解码应该是拿到data的值为dXNlck5hbWU9SmFjayYmcGFzc3dvcm=V=9=J=TIzNDU2Nzg5MA==,并解码此值并对其进行分割获取相应的数据内容
console.log(`解密data:${base64Decrypt(base64Encryption(params))}, 后端分割:${base64Decrypt(base64Encryption(params)).split('&&')}`)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值