散列算法MD5、SHA256与AES加密,封装基于crypto-js.js的加密插件,使用的RequireJS进行JS的模块化编程

/* 声明一个数据加密模块 */
define(['lib/crypto-js'], function (CryptoJS) {

    return{
        //Hashing算法
        encryptWithHashing: function(message, type) {
            switch (type) {
                case "SHA256":
                    return CryptoJS.SHA256(message).toString(CryptoJS.enc.Base64);
                case "MD5":
                    return CryptoJS.MD5(message).toString(CryptoJS.enc.Base64);
                default:
                    return null;
            }
        },
        /* AES对称加密算法的加解密 */
        //AES加密
        encryptWithAES: function(message, key, vi) {
            let encrypted = CryptoJS.AES.encrypt(CryptoJS.enc.Utf8.parse(message), CryptoJS.enc.Utf8.parse(key), { //key必须要为16位十六进制进制
                iv: CryptoJS.enc.Utf8.parse(vi), // 初始向量
                mode: CryptoJS.mode.CBC,
                padding: CryptoJS.pad.Pkcs7
            });
            return CryptoJS.enc.Base64.stringify(encrypted.ciphertext); //将密文转换为Base64编码字符串
        },
        //AES解密
        decryptWithAES: function(encrypted_Base64, key, vi) {

            let encrypted = CryptoJS.enc.Base64.parse(encrypted_Base64); //Base64字符串解码
            let src = CryptoJS.enc.Base64.stringify(encrypted);

            let decrypted = CryptoJS.AES.decrypt(src, CryptoJS.enc.Utf8.parse(key), {
                iv: CryptoJS.enc.Utf8.parse(vi), // 初始向量
                mode: CryptoJS.mode.CBC,
                padding: CryptoJS.pad.Pkcs7
            });
            return decrypted.toString(CryptoJS.enc.Utf8);
        }

    }
});

注:需要自己下载crypto-js.js文件
调用演示:

require.config({
    baseUrl: 'js',
    paths: {
        encrypt: 'utils/encrypt'
    }
});

require(['encrypt'], function (encrypt) {
	//MD5散列算法
	let md5 = encrypt.encryptWithHashing("md5", "MD5");
	
	let key;//后端获取AES密钥
	let vi;//后端获取AES的初始向量
    //AES加密
    let aesEncrypted = encrypt.encryptWithAES("aes", key, vi);
    //AES解密
    let aes = encrypt.decryptWithAES(aesEncrypted, key, vi);
});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值