记录使用crypto-js、jsencrypt实现js加密的方法

news2024/10/5 22:39:32

实用为主,直接上干货。

使用工具:pycharm专业版2020.3.2。

记录通过crypto-js模块、jsencrypt模块两种方式实现加密。

本文在pycharm中新建一个项目,一步一步记录实现步骤。

一、新建pycharm项目并新建两个js文件,分别命名为crypto123.js和jsencrypt123.js

二、在此项目中初始化npm

打开pycharm底部的Terminal,输入npm init -y

运行完毕后,在项目目录中会出现一个package.json的文件。

参考文章npm WARN saveError ENOENT: no such file or directory, open 'C:\Users\...\package.json'问题解决_no such file or directory, open package.json-CSDN博客 

三、安装crypto-js模块、jsencrypt模块

(一)安装crypto-js模块

在Terminal中,输入npm i crypto-js

安装完成后,在项目目录中会出现一个node_modules的文件夹,其中有一个crypto-js的文件夹。

友情提示:在npm库中,还有一个cryptojs的库,与crypto-js就缺少一个-,但是不同的库,不是我们需要的。一定注意安装时不要弄混。

(二)安装jsencrypt模块

在Terminal中,输入npm i jsencrypt

在项目路径下的node_modules文件夹中出现jsencrypt文件夹。

通过以上(一)(二)步骤,所需要的模块就安装好了。

注意,npm i 模块名这种安装方式,是局部安装,可以理解为,这两个模块只在本项目下可以使用。 

npm的操作可以参考文章:https://zhuanlan.zhihu.com/p/711020089

npm有很多模块,在官网上可以查询,参考链接:npm | Home 

四、使用模块实现加密

(一)crypto-js模块加密实现

(1)MD5的实现

const cryptoJS = require('crypto-js')
aaa=cryptoJS.MD5('123456');
s=aaa.toString();
console.log(s)

测试成功,友情提示,记住123456的md5是e10adc3949ba59abbe56e057f20f883e,有用。

(2)AES加密的实现

//(2)AES加密的实现
const cryptoJS = require('crypto-js')
const message = cryptoJS.enc.Utf8.parse('123456')//需要加密的明文
const secretPassphrase = cryptoJS.enc.Utf8.parse('abc666666666')//秘钥
const iv = cryptoJS.enc.Utf8.parse('def888888888')//iv(CBC模式需要)

//cryptoJS.AES.encrypt需要三个参数:1,加密明文内容;2.秘钥;3,配置对象(默认CBC模式,需要iv;若是ECB,不需要iv)
const encrypted = cryptoJS.AES.encrypt(message, secretPassphrase, {
  mode: cryptoJS.mode.CBC,
  padding: cryptoJS.pad.Pkcs7,
  iv
}).toString()

console.log(encrypted)

(3)DES加密的实现

const cryptoJS = require('crypto-js')
const message = '123456';//要加密的明文
const key = "abc666666666";//秘钥

const options = {
  iv: cryptoJS.enc.Hex.parse('0000000000000000'), // 初始化向量为全零,初始化向量用于增加密码算法的安全性。16 字节的字节数组或WordArray 对象
  mode: cryptoJS.mode.ECB, // 加密模式,默认为 ECB
  padding: cryptoJS.pad.Pkcs7, //使用 Pkcs7 填充方式。这是最常用的填充方式,会在原始数据的末尾添加字节,使得数据长度符合加密算法的要求。
};


const encrypted = cryptoJS.DES.encrypt(message, key, options);
const ciphertext = encrypted.toString();

console.log('加密后的密文:', ciphertext);

const decrypted = cryptoJS.DES.decrypt(ciphertext, key, options);
console.log('解密后的明文:', decrypted.toString(cryptoJS.enc.Utf8))

(二)jsencrypt模块RSA加密实现

const JSEncrypt = require('jsencrypt');

// 公钥
const key = 'MIGfMA0GCSqGSIb3XXXXXXXXXXXXX'

// 加密
function setEncrypt (msg) {
  const jsencrypt = new JSEncrypt();
  jsencrypt.setPublicKey(key);
  return jsencrypt.encrypt(msg);
}

console.log(setEncrypt('123456'));

提示出错:ReferenceError: window is not defined 。

不要紧张,按住ctrl后鼠标点击出错链接,跳转到jsencrypt.js的源码处,在顶部添加window=global;即可。

再次回到程序运行,得到正确结果

参考文章:

前端加密与 crypto-js 和 JSEncrypt 的使用_wx65532c6f69751的技术博客_51CTO博客

nodejs之 crypto-js模块,浏览器端加解密算法库-CSDN博客

在pycharm中设置后直接运行js代码-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2190646.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python 工具库每日推荐 【Requests】

文章目录 引言Python网络库的重要性今日推荐:Requests工具库主要功能:使用场景:安装与配置快速上手示例代码代码解释实际应用案例案例1:获取天气信息案例分析案例2:文件上传案例分析高级特性会话和Cookie处理自定义请求头超时设置代理设置扩展阅读与资源优缺点分析优点:缺…

Markdown 语法详解大全(超级版)(三)——甘特图语法详解

Markdown 语法详解大全(超级版)(三)——甘特图语法详解 Markdown 语法详解大全(超级版)(一) Markdown 语法详解大全(超级版)(二) Markdown 语法详解大全(超级版)(三) Markdown 语法…

[Linux#61][UDP] port | netstat | udp缓冲区 | stm32

目录 0. 预备知识 1. 端口号的划分范围 2. 认识知名端口号 3. netstat 命令 4. pidof 命令 二.UDP 0.协议的学习思路 1. UDP 协议报文格式 报头与端口映射: 2. UDP 的特点 面向数据报: 3. UDP 的缓冲区 4. UDP 使用注意事项 5. 基于 UDP 的…

栈的介绍与实现

一. 概念与结构 栈:⼀种特殊的线性表,其只允许在固定的⼀端进⾏插⼊和删除元素操作。进⾏数据插⼊和删除操作的⼀端称为栈顶,另⼀端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out的原则。 压栈:栈的插…

平面电磁波(解麦克斯韦方程)电场相位是复数的积分常数,电场矢量每个分量都有一个相位。磁场相位和电场一样,这是因为无损介质中实数的波阻抗

注意无源代表你立方程那个点xyzt处没有源,电场磁场也是这个点的。 j电流面密度,电流除以单位面积,ρ电荷体密度,电荷除以单位体积。 j方程组有16个未知数,每个矢量有三个xyz分量,即三个未知数,…

k8s的简介和部署

一、k8s简介 在部署应用程序的方式上面,主要经历了三个阶段: 传统部署:互联网早期,会直接将应用程序部署在物理机上优点:简单,不需要其它技术的参与缺点:不能为应用程序定义资源使用边界,很难合理地分配计算资源&…

fiddler抓包18-1_导出jmeter脚本(jmx文件)

课程大纲 方法1 ① 下载2个扩展文件,FiddlerExtensions.dll和FiddlerExtensions.pdb,到Fiddler根目录中的“ImportExport”下,重启Fiddler。 下载链接: https://pan.baidu.com/s/1qtLoaiTd-VfHFb3UIPoSZw?pwdtwcu提取码: twcu ② Fiddler导…

UIAbility组件

一、作用 UIAbility组件是系统调度的基本单元,为应用提供绘制界面的窗口。一个应用可以包含一个或多个UIAbility组件 1、每一个UIAbility组件实例都会在最近任务列表中显示一个对应的任务。 如果开发者希望在任务视图中看到一个任务,建议使用“一个UIAbility+多个页面”的方…

Qt教程(002):Qt项目创建于框架介绍

二、创建Qt项目 2.1 创建项目 【1、New Project】 【2、选择Qt Widgets Application】 【3、设置项目名称和保存路径】 注意,项目名称和路径不要带中文。 【4、选择QWidget】 带菜单栏的窗口QMainWindow空白窗口QWidget对话框窗口QDialog 【5、编译】 2.2 项目框…

No.3 笔记 | Web安全基础:Web1.0 - 3.0 发展史

大家好!作为一个喜欢探索本质的INTP,我整理了一份简明易懂的Web安全笔记。希望能帮助你轻松掌握这个领域的核心知识。 这份笔记涵盖了Web发展的历程,从静态的Web 1.0到智能化的Web 3.0。我们将探讨URL和HTTP协议,揭示它们在网络中…

【深度学习基础模型】神经图灵机(Neural Turing Machines, NTM)详细理解并附实现代码。

【深度学习基础模型】神经图灵机(Neural Turing Machines, NTM)详细理解并附实现代码。 【深度学习基础模型】神经图灵机(Neural Turing Machines, NTM)详细理解并附实现代码。 文章目录 【深度学习基础模型】神经图灵机&#xf…

利用条件概率解决“两个孩子的性别问题”

利用条件概率解决“两个孩子的性别问题”:深入分析与扩展 在日常生活中,概率问题常常会带来直观上的困惑,尤其是在涉及到条件概率的时候。今天我们讨论的这个问题是一个非常经典的例子:已知一对父母有两个孩子,其中一…

二叉树的中序&后序遍历——非递归版本

1.题目解析 题目来源:二叉树的中序遍历——力扣 测试用例 题目来源:二叉树的后序遍历——力扣 测试用例 2.算法原理 中序遍历 中序遍历:左子树->根节点->右子树 与之前前序遍历的思路基本相同,不过需要注意的是中序变量需要…

今日指数项目股票Code联想推荐功能实现

股票Code联想推荐 1 股票Code联想推荐功能介绍 1) 原型效果 输入框输入股票编码后,显示关联的股票信息; 2)接口定义说明 接口说明: 功能描述:根据输入的个股代码,进行模糊查询,返回证券代码和证券名称…

Redis中GEO数据结构实现附近商户搜索

Redis的版本必须是6.2以上 在测试类中将数据导入Redis Testvoid loadShopData(){//1.查询店铺信息List<Shop> list shopService.list();//2.把店铺分组&#xff0c;按照typeId分组&#xff0c;typeId一致的放到一个集合Map<Long, List<Shop>> map list.s…

Spring Boot 三层架构开发模式入门

在 Spring Boot 项目中&#xff0c;构建清晰、易于维护的代码结构至关重要。传统业务逻辑方式往往将所有代码混杂在一起&#xff0c;导致代码难以理解、修改和扩展。三层架构模式的出现正是为了解决这些问题&#xff0c;让我们深入了解它带来的改变。 一、传统业务逻辑方式 假…

实战六:使用嵌套循环输出九九乘法表,总结了五种方法

问题描述: 使用嵌套循环输出九九乘法表&#xff0c;内层循环与外层循环的关系&#xff0c;输出的数据的个数与行数相同&#xff0c;即第一行输出一个&#xff0c;111&#xff0c;第二行输出两个122 2*24依次类推。 编程&#xff1a; 1.方法一&#xff1a; for i in range(1…

昊辰创投注资众见科技,共筑智能眼镜未来:新一轮融资加速技术创新与市场扩张

众见科技:智能眼镜领域的新星,昊辰创投助力新轮融资 在智能眼镜市场日益成为科技创新与资本追逐焦点的今天,深圳众见科技有限公司(以下简称“众见科技”)以其卓越的技术实力和前瞻性的市场布局,成功吸引了昊辰创投的青睐,完成了新一轮融资。此次融资不仅标志着众见科技在…

基于SpringBoot+Vue的高校运动会管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…