ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

前端怎么使用AES 实现对登陆密码的加密和解密

2022-07-06 23:05:41  阅读:299  来源: 互联网

标签:AES enc return Buffer base64 登陆密码 解密 cipher var


前端怎么使用AES 实现对登陆密码的加密和解密
import crypto from 'crypto'
// @version 1.0 aes-128-gcm 加密
// @params msg 为加密信息 key为32位的16进制key
// @return 返回base64编码

export function Encrypt(msg) {
let key = 'adasdasdsad....'
try {
var pwd = Buffer.from(key, 'hex');
var iv = crypto.randomBytes(12);
var cipher = crypto.createCipheriv('aes-128-gcm', pwd, iv);
var enc = cipher.update(msg, 'utf8', 'base64')
enc += cipher.final('base64');
//cipher.getAuthTag() 方法返回一个 Buffer,它包含已从给定数据计算后的认证标签。 ****
//cipher.getAuthTag() 方法只能在使用 cipher.final() 之后调用 这里返回的是一个十六进制后的数组
var tags = cipher.getAuthTag();
enc = Buffer.from(enc, 'base64');
//由于和java对应的AES/GCM/PKCS5Padding模式对应 所以采用这个拼接
var totalLength = iv.length + enc.length + tags.length;
var bufferMsg = Buffer.concat([iv, enc, tags], totalLength);
return bufferMsg.toString('base64');
} catch (e) {
return null;
}
}

// version 1.0 aes-128-gcm 解密
// return msg 返回字符串

export function Decrypt(serect) {
let key = 'adasdasdsad....'
try {
var tmpSerect = Buffer.from(serect, 'base64');
var pwd = Buffer.from(key, 'hex');
//读取数组
var iv = tmpSerect.slice(0, 12);
var cipher = crypto.createDecipheriv('aes-128-gcm', pwd, iv);
//这边的数据为 去除头的iv12位和尾部的tags的16位
var msg = cipher.update(tmpSerect.slice(12, tmpSerect.length - 16));

    return msg.toString('utf8');

} catch (e) {
    return null;
}

}

页面的使用
import {Encrypt,Decrypt } from 'index.js'

var enc = Encrypt(testMsg);
console.log("加密结果", enc);

var dec = Decrypt(enc);
console.log('解密结果', dec);

参考文献:https://blog.csdn.net/qq_26026975/article/details/114582797

标签:AES,enc,return,Buffer,base64,登陆密码,解密,cipher,var
来源: https://www.cnblogs.com/zw100655/p/16444587.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有