首页 > 其他分享 >JS加解密之AES

JS加解密之AES

时间:2023-01-28 16:01:30浏览次数:47  
标签:AES enc console key 加解密 JS str var CryptoJS


 

 

demo

<script src="https://cdn.bootcss.com/crypto-js/3.1.9-1/crypto-js.min.js"></script>
<script>

    alert(aesDecrypt(aesEncrypt("yvioo","wa1234535"),"wa1234535"))

    /**
     * 加密字符串
     * @param str  要加密的字符串
     * @param key  秘钥 
     * @returns {string}
     */
    function aesEncrypt(str, key) {
        var APIFMS;
        try {
            var keyHex_encrypt = CryptoJS.enc.Utf8.parse(key);
            var encrypted = CryptoJS.AES.encrypt(str, keyHex_encrypt, {
                mode: CryptoJS.mode.ECB,
                padding: CryptoJS.pad.Pkcs7
            });
            APIFMS = CryptoJS.enc.Base64.stringify(encrypted.ciphertext);
        } catch (err) {
            console.log('aes 加密 -------------------------');
            console.log(err);
        }
        return APIFMS;
    }

    /**
     * 解密字符串
     * @param str 要解密的字符串
     * @param key  秘钥 
     * @returns {string}
     */
    function aesDecrypt(str, key) {
        var result_value;
        try {
            var keyHex_decrypt = CryptoJS.enc.Utf8.parse(key);
            var decrypted = CryptoJS.AES.decrypt({
                ciphertext: CryptoJS.enc.Base64.parse(str)
            }, keyHex_decrypt, {
                mode: CryptoJS.mode.ECB,
                padding: CryptoJS.pad.Pkcs7
            });
            result_value = decrypted.toString(CryptoJS.enc.Utf8);
        } catch (err) {
            console.log('aes 解密 ------------------------- ');
            console.log(err);
            console.log("解密前数据:" + str);
        }
        return result_value;
    }
</script>

 

如果解密出现异常:Error: Malformed UTF-8 data

看下是不是因为密文含有换行符\r\n  如果有要把这种去掉

 

str = str.toString().replace(/\r|\n/ig, "");

 

标签:AES,enc,console,key,加解密,JS,str,var,CryptoJS
From: https://www.cnblogs.com/pxblog/p/17070480.html

相关文章

  • AJAX服务器响应JSON数据&设置响应体数据类型
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>JSON响......
  • js 导入excel数据 时间转换
    废话不多说,直接上代码:formatDate(timeNum){consttime=newDate(((Number(timeNum)-70*365-19)*24*3600-8*3600-42.5)*1000)constyear=......
  • js方法中回调函数的使用
    js方法中回调函数的使用什么是回调函数(Callback)在JavaScript中,函数是对象。因此,函数可以将函数作为参数,并且可以由其他函数返回。执行此操作的函数称为高阶函数。作为......
  • vue配置反向代理解决跨域__Vue.js
    正向代理与反向代理正向代理:在客户端和原始服务器(originserver)之间架设一个代理服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后......
  • js中function的写法
    js文件中function的写法//Js代码functionfoo(){console.log('helloworld');}foo();//用匿名函数:varfoo=function(){console.log('helloworld')......
  • PHP转Go实践:xjson解析神器「开源工具集」
    前言近期会更新一系列开源项目的文章,新的一年会和大家做更多的开源项目,也欢迎大家加入进来。xutil今天分享的文章源自于开源项目jinzaigo/xutil的封装。在封装过程中......
  • 如何从 JS 对象中删除属性?
    问题描述给定一个对象:letobj={name:'echohye',age:'18',hobby:'sleep'}如何删除属性hobby以得到以下obj?letobj={name:'echohye',age:'......
  • 安装配置node.js和npm
    一、安装nodejs环境运行官网下载的【.msi】安装包,全部默认下一步,完成安装。执行命令行node-v验证是否安装成功。二、更改npm默认安装路径在【nodejs】根目录,新建......
  • Angularjs的重要概念
    AngularJS的重要概念MVC模式AngularJS最早按照MVC模式设计,在这种设计模式下,AngularJS组件可以分为:M:Model,即模型,是应用程序中用于处理应用程序数据逻辑的部分,在Angula......
  • js对象数组去重
    一个对象数组,根据传入的属性key对应的值来去重,实现方法如下,用双数组法,只要一次循环即可,时间复杂度低//对象数组去重arr=[{a:1},{a:2},{a:1},{a:3}]functiontodo(p......