JavaScript 示例: jsencrypt 私钥 16位密码短语 + cryptojs AES加解密

JavaScript 示例: jsencrypt 私钥 16位密码短语 + cryptojs AES加解密

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>JavaScript 示例: jsencrypt 私钥 16位密码短语 + cryptojs AES加解密</title>
</head><body><script src="https://cdn.bootcdn.net/ajax/libs/crypto-js/4.1.1/crypto-js.min.js"></script><script src="https://cdn.bootcdn.net/ajax/libs/jsencrypt/3.2.1/jsencrypt.min.js"></script><script>// 第一步:获取“私有秘钥”并保存留用// 以下秘钥通过 new JSEncrypt().getPrivateKeyB64() 获取并将获取的秘钥通过字面量赋值给 privateKeyconst privateKey = `MIICWwIBAAKBgQCF5SRovhqNKrl2YtApM1OH9JcXF99NtjHa2zHIqMpFiHTW8fiplcIJIrMENqhwz/lT1ArfDrU0yvFX1H1xKKkd8qTts7ysEx5sl+gO4v8KNyP5NnMZ5qmpGO2Kwa67tRyl0JiU0hIGueTegyXAzalfD3TZ3wyckY8q0w93oYGf0QIDAQABAoGAN+CWvzeGsR8BYwx9vpPy6iwC2dpWkIHWcHVFY249a6M0z3cPxQYAgft/JeUBioLglEFLgCcNLEj9SyAccZr8aCra0DDI6IrjVBlHd4OYP1j51hpRM4D0A+opI2D08lD40jFHfc+iVBBfEuo/yiN5s8I1Ppcq8RfCstobMUJ2w5kCQQDmbJb9UjzSaS4xSHS1vHKA6gDZqQk91N3q3H+B/mPOvzzUvYs0F9/B37mKWLX7QQNgTTOHKQrpeX+d7kz/CT+nAkEAlMG3mAW+kpKyEWATribNijkBXZA4lqO9BpgnEPW/DKfst7KvZLqsrmuDfzmKnQ5qD+3tegBu57eEyTTnVqJTxwJAG1NtZIVIKTvH+pg5HwRGH/ugNi/RpL+FwcB8bpIYjAAp2qDPzVG3e2pountiuXUwTU9aeQDpBl8eP0BvaR9TqQJABhQcYnPpo6em6xrX8wfW4k0OBzq7dTxfnwNcpU7Fbcj23VLJ4/3UzJPMHcjGJ0DNiLUaPSADaCiRnn8w7NNZRQJAJyEb+SE4Niies7dZt6dKHNCQErSw0rJhVPc4hEV/QdBJ7rUiBPMdHkz2BRfCizcPrCoY7gGQdEHYS6Dn6bThkA==`// 第二步:获取密码短语(16位的字符串)生成的“秘钥”// 以下秘钥通过第一步获取的 privateKey,作为JSEncrypt实例的私有秘钥,之后加密一个16位的字符串(1234567890123456)获得 // t = new JSEncrypt(), t.setPrivateKey(privateKey), t.encrypt('1234567890123456')let key = "eixa7bmeSU6LTWTSakyT90gaswNxoHBqQBNJHSL04ytasyAoNqc+g5IqvTRsZsiCA4/jawB/ynbH8PDtZi3LwUeHT4bCjo3eFfuG/3umB37Q/JqOK9LI2i8/PfDUSN9At/2g/PpWlfceTUkGX5RbcAaRV00yAJ9aDnkxuay+D2Q="// 原文let json = '{"isHeavyNet":"","linkUsage":"","telephoneNum":"138****7650","licenseOwner":"贾*贵","idNumber":"","orderTempSource":""}'// 密文let cipherText = 'N6SblKJZMlFY43UiNQepQLO1lsya9Nvkh+HAdw3FOpWthGZyQfjIuR2k92lPNuzSsiV/mU6hOC4HK81mLVvj4kUAj0c4e7VIVy1jxcT6TpOXLsLIQFgrnaZDs0dNsDdmUaSrmy6Y0WJFTRGoS2G+dpqDY5Qq87FawHIaGsuUBSI='// 通过第一步获取的“私有秘钥”对第二步获取的密码短语“秘钥”进行解密,得到密码短语明文(16位的字符串)function getSecretPassphrase(e) {var t = new JSEncrypt()t.setPrivateKey(privateKey)return t.decrypt(e)}// 加密方法function encipher(e, t) {var a = CryptoJS.enc.Utf8.parse(getSecretPassphrase(t))var n = CryptoJS.enc.Utf8.parse(e)var i = CryptoJS.AES.encrypt(n, a, {mode: CryptoJS.mode.ECB,padding: CryptoJS.pad.Pkcs7})return CryptoJS.enc.Base64.stringify(i.ciphertext)}console.log('加密密文:', encipher(json, key))// 解密方法function decipher(e, t) {var a = CryptoJS.enc.Utf8.parse(getSecretPassphrase(t))var n = CryptoJS.AES.decrypt({ciphertext: CryptoJS.enc.Base64.parse(e)}, a, {mode: CryptoJS.mode.ECB,padding: CryptoJS.pad.Pkcs7})return n.toString(CryptoJS.enc.Utf8)}console.log('解密明文:', decipher(cipherText, key))</script>
</body></html>

CryptoJS Doc
crypto-js Npm
JSEncrypt Doc
jsencrypt Npm

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

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

相关文章

[go] Stringer 类型

Stringer是Golang的fmt包中的一个类型。 Stringer由任何具有String方法的值来实现。 实现Stringer的类型与字符串的打印方式相同。Stringer会返回一个字符串。 type Stringer type Stringer interface {String() string }让我们看一个例子&#xff0c;我们有一个结构&#…

【图形学】实现二维几何变换

二维点类 class CPoint2 { public:CPoint2();CPoint2(double x, double y);~CPoint2();friend CPoint2 operator (const CPoint2& p0, const CPoint2& p1);friend CPoint2 operator -(const CPoint2& p0, const CPoint2& p1);friend CPoint2 operator *(const…

云原生 - 微信小程序 COS 对象存储图片缓存强制更新解决方案

问题描述 遇到一个这样的情况&#xff1a;在微信小程序里图片缓存十分麻烦&#xff0c;网上很多说在腾讯云里的 COS 存储对象服务里设置对应的图片缓存&#xff08;Header 头 Cache-Contorl&#xff09;&#xff0c;说实话真不好用&#xff0c;一会儿生效&#xff0c;一会儿没…

excel学习1

直接ctrl cctrl v会报错位移选择粘贴时用123那个数字粘贴而不是ctrl V 只要结果不要公式 上面复制的为数值这里是复制的公式他们两个不一样 这个方法太麻烦了直接用格式刷&#xff0c;选择一个区域一个单元格&#xff0c;不要选择多个一刷就出来了 第一个计算后向下拖就行了&…

FastDFS分布式文件存储

为什么会有分布式文件系统&#xff1f; 分布式文件系统是面对互联网的需求而产生。因为互联网时代要对海量数据进行存储。很显然靠简单的增加硬盘个数已经满足不了我们的要求。因为硬盘传输速度有限但是数据在急剧增长&#xff0c;另外我们还要要做好数据备份、数据安全等。采用…

Git的安装与配置

目录 前言 Linux-centos&#xff1a;下安装 Linux_ubuntu下安装 创建Git本地仓库 配置用户名和Email 前言 Git是一种版本控制器&#xff0c;能够让我们了解一个文件的历史&#xff0c;以及它的发展过程。通俗的将就是可以记录一个工程的每一次改动和版本迭代的一个管理系统…

【vscode】6、调试 shell

文章目录 经常在 IDE 下使用 高级语言后&#xff0c;往往并不习惯 shell 编程&#xff0c;因为没有酷炫的界面。但现在 vscode 可以很方便的调试 shell 脚本。 配置方法如下&#xff1a; vscode 下载 Bash Debug 插件 mac 升级 bash 版本&#xff08;因为此 vscode 插件需要 b…

蓝桥杯重要知识点和赛题直通车

<蓝桥杯软件赛>零基础备赛20周 第 1周(2023-10-23): 蓝桥杯软件赛介绍官方链接零基础能得奖吗&#xff1f; 第 2周(2023-10-30): 常考知识点蓝桥杯怎么判题备赛计划 第 3周(2023-11-06): 填空题&#xff08;分数少但越来越不好做&#xff09; 第 4周(2023-11-13): &#…

Qt系统托盘的学习

参考&#xff1a; Qt系统托盘程序的实现_qt托盘程序-CSDN博客 QT系统托盘应用程序-CSDN博客 代码&#xff1a; #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QSystemTrayIcon> #include <QDebug> #include <QMenu> #include &l…

更改wpf原始默认按钮的样式

样式 代码 <Window x:Class"WpfApp4.Window1"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d"http://schemas.microsoft.com/expression/blend/2008…

141基于matlab的齿轮系统非线性动力学特性分析

基于matlab的齿轮系统非线性动力学特性分析&#xff0c;综合考虑齿侧间隙、时变啮合刚度、综合啮合误差等因素下&#xff0c;参数阻尼比变化调节下&#xff0c;输出位移、相图、载荷、频率幅值结果。程序已调通&#xff0c;可直接运行。 141 matlab齿轮非线性动力学 (xiaohongs…

【C++】多项式输出

记录一下这个WA了三遍才AC的题......QAQ 题目描述 一元 n 次多项式可用如下的表达式表示&#xff1a; 其中&#xff0c;aixi称为 i 次项&#xff0c;ai 称为 i 次项的系数。给出一个一元多项式各项的次数和系数&#xff0c;请按照如下规定的格式要求输出该多项式&#xff1a; f…

使用VSCode开发 Python虚拟环境配置说明

这里给大家介绍下怎么配置VSCode的环境来开发Python。 介绍&#xff1a; VSCode是一款由Microsoft开发的免费、开源的代码编辑器。它具有许多优势&#xff0c;使其成为许多开发者喜爱的工具之一。以下是一些VSCode的主要优势&#xff1a; 轻量且快速启动&#xff1a; VSCode是…

【ASP.NET Core 基础知识】--依赖注入(DI)--什么是依赖注入

依赖注入&#xff08;Dependency Injection&#xff0c;简称DI&#xff09;是一种设计模式&#xff0c;用于解耦和管理类之间的依赖关系。它的核心思想是将原本需要在代码中显式创建的依赖关系&#xff0c;交给外部容器进行控制和管理。 具体来说&#xff0c;依赖注入的实现方式…

每日一题——LeetCode1299.将每个元素替换为右侧最大元素

方法一 个人方法&#xff1a; 题目意思就是求在i1;i的循环条件下&#xff0c;arr[i]-arr[arr.length-1]的最大值分别为多少&#xff0c;最后一项默认为-1 用slice方法可以每次把数组第一位去除&#xff0c;得到求最大值的目标数组 Math的max方法可以直接返回数组里的最大值 …

基于yolov5-master和pyqt5的森林火灾监测软件

文章目录 项目背景效果演示一、实现思路① 算法原理② 程序流程图 二、系统设计与实现三、模型评估与优化 项目背景 火灾作为威胁人类生命生产安全的隐患之一&#xff0c;一直是人们关注的重点。传统的火灾监测装置根据温度来检测火灾&#xff0c;不仅灵敏度差&#xff0c;而且…

《Learning to Reweight Examples for Robust Deep Learning》笔记

[1] 用 meta-learning 学样本权重&#xff0c;可用于 class imbalance、noisy label 场景。之前对其 (7) 式中 ϵ i , t 0 \epsilon_{i,t}0 ϵi,t​0&#xff08;对应 Algorithm 1 第 5 句、代码 ex_wts_a tf.zeros([bsize_a], dtypetf.float32)&#xff09;不理解&#xff…

LeetCode 每日一题 Day 47 - 50

2171. 拿出最少数目的魔法豆 给定一个 正整数 数组 beans &#xff0c;其中每个整数表示一个袋子里装的魔法豆的数目。 请你从每个袋子中 拿出 一些豆子&#xff08;也可以 不拿出&#xff09;&#xff0c;使得剩下的 非空 袋子中&#xff08;即 至少还有一颗 魔法豆的袋子&a…

数据结构课程设计 仓储管理系统

仓储管理系统 【基本功能】 把货品信息表抽象成一个线性表&#xff0c;货品信息&#xff08;包括ID、货品名、定价、数量等&#xff09;作为线性表的一个元素&#xff0c;实现&#xff1a;按ID、货品名分别查找某货品信息&#xff08;包括ID、货品名、定价、数量等&#xff0…

C++版QT:电子时钟

digiclock.h #ifndef DIGICLOCK_H #define DIGICLOCK_H ​ #include <QLCDNumber> ​ class DigiClock : public QLCDNumber {Q_OBJECT public:DigiClock(QWidget* parent 0);void mousePressEvent(QMouseEvent*);void mouseMoveEvent(QMouseEvent*); public slots:voi…