前端使用crypto-js实现密码加解密功能

本文详细介绍如何在前端使用crypto-js模块实现AES加密与解密,包括模块安装、工具封装及实际应用,提供具体代码示例,适用于保护敏感数据。
1.安装crypto-js模块
npm install crypto-js
2.封装工具
//secret.js

import CryptoJS from 'crypto-js'; //导入加密模块

const aseKey = '0123456789abcdef'; //十六位十六进制数作为密钥
const iv = 'abcdef0123456789'; //十六位十六进制数作为密钥偏移量
let key = CryptoJS.enc.Utf8.parse(aseKey);
let ivs = CryptoJS.enc.Utf8.parse(iv);



/**
 * 加密方法
 * @param {String} word 需要加密的字符
 * @returns {String} 加密后的字符
 */
export function encrypt(word) {
    const srcs = CryptoJS.enc.Utf8.parse(word);
    const encrypted = CryptoJS.AES.encrypt(srcs, key, { 
        iv: ivs,
        mode: CryptoJS.mode.CBC,
        padding: CryptoJS.pad.Pkcs7
    });
    return encrypted.ciphertext.toString().toUpperCase();
}

/**
 * 解密方法
 * @param {String} word 需要解密的字符
 * @returns {String} 解密后的字符
 */
export function decrypt(word) {
    const encryptedHexStr = CryptoJS.enc.Hex.parse(word);
    const srcs = CryptoJS.enc.Base64.stringify(encryptedHexStr);
    const decrypt = CryptoJS.AES.decrypt(srcs, key, { 
        iv: ivs, 
        mode: CryptoJS.mode.CBC, 
        padding: CryptoJS.pad.Pkcs7
    });
    const decryptedStr = decrypt.toString(CryptoJS.enc.Utf8);
    return decryptedStr.toString();
}

export default {
    encrypt,
    decrypt
};

3.应用

import secret from './secret.js';

let password = '123456';
const token = secret.encrypt(password); //加密

password = secret.decrypt(token); //解密

typescript版另一种写法

import CryptoJS from 'crypto-js';
const aseKey = '0123456789abcdef';
const iv = 'abcdef0123456789';
let key = CryptoJS.enc.Utf8.parse(aseKey);
let ivs = CryptoJS.enc.Utf8.parse(iv);

//加密
export function encrypt(data: any) {
    let encrypted = CryptoJS.AES.encrypt(data, key, {
        iv: ivs,
        mode: CryptoJS.mode.CBC,
        padding: CryptoJS.pad.Pkcs7,
    });
    return encrypted.toString();
}

//解密
export function decrypt(data: any) {
    let decrypt = CryptoJS.AES.decrypt(data, key, {
        iv: ivs,
        mode: CryptoJS.mode.CBC,
        padding: CryptoJS.pad.Pkcs7,
    });
    return CryptoJS.enc.Utf8.stringify(decrypt).toString();
}

export default {
    encrypt,
    decrypt,
};

参考文章:前端 crypto-js aes 加解密

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值