最近由于工作需要,对JS的加解密进行了调研,在这里我把使用的JS 模块、模块的安装方法以及运行报错的问题进行分享,由于我是JS新手,因此这也会是许多新手小白的共性问题。
CryptoJS是一个JavaScript的加解密的工具包。它支持多种的算法:MD5、SHA1、SHA2、SHA3、RIPEMD-160 哈希散列,进行 AES、DES、Rabbit、RC4、Triple DES 加解密。
npm install crypto-js
在我的js 脚本中,使用crypto-js进行解密,核心代码如下:
import CryptoJS from "crypto-js";
const k = "跟研发确认的可以值";
function AES_DE(text) {
var key = CryptoJS.enc.Utf8.parse(k);
let decrypt= CryptoJS.AES.decrypt(text,key,{mode:CryptoJS.mode.ECB,padding: CryptoJS.pad.Pkcs7});
let result=JSON.parse(CryptoJS.enc.Utf8.stringify(decrypt).toString());
return result
}
var jsonData = AES_DE("需要进行解密的密文");
console.log(jsonData) //输出解密以后的密码
错误代码如下:
Warning: To load an ES module, set “type“: “module“ in the package.json or use the .mjs extension.
错误的原因就是缺少module,但是我已经明明安装了crypto-js啊?我相信这一定也是初识JS的小白同学们的共性问题!
进入工程所在目录,然后执行 npm init, 在目录中会生成package.json 文件。package.json文件主要是用来记录这个项目的详细信息,它会将我们在项目开发中所要用到的包以及项目的各类信息记载下来。熟悉java的朋友们一下子就会想到maven工程的pom.xml,二者作用一致,这里就不多说了。
简单的解释一下:如果大家只是编写简单的js脚本(没有外部依赖的包)来了解JS的基础语法,那么无需关注package.json;但是如果大家想深入编写JS脚本,引入更为高效的第三方JS工具库,那就必须深入地了解package.json的相关内容了,详情请参考:
https://docs.npmjs.com/cli/v6/configuring-npm/package-json/
回到我的问题,如何解决:Warning: To load an ES module, set “type“: “module“ in the package.json or use the .mjs extension.
很简单!只需要两步!
1.进入工程所在目录,然后执行 npm init,生成package.json
2.在创建好的package.json 中添加"type": "module",如下图
{
"name": "js_demo",
"version": "1.0.0",
"description": "test package",
"type": "module",
"main": "demojs.js",
"scripts": {
"test": "test"
},
"author": "kevin",
"license": "ISC",
"dependencies": {
"crypto-js": "^4.1.1"
}
}
再次运行JS脚本,问题解决!