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

本文主要是介绍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

这篇关于JavaScript 示例: jsencrypt 私钥 16位密码短语 + cryptojs AES加解密的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/626802

相关文章

SpringBoot UserAgentUtils获取用户浏览器的用法

《SpringBootUserAgentUtils获取用户浏览器的用法》UserAgentUtils是于处理用户代理(User-Agent)字符串的工具类,一般用于解析和处理浏览器、操作系统以及设备... 目录介绍效果图依赖封装客户端工具封装IP工具实体类获取设备信息入库介绍UserAgentUtils

Spring 中的循环引用问题解决方法

《Spring中的循环引用问题解决方法》:本文主要介绍Spring中的循环引用问题解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录什么是循环引用?循环依赖三级缓存解决循环依赖二级缓存三级缓存本章来聊聊Spring 中的循环引用问题该如何解决。这里聊

pandas中位数填充空值的实现示例

《pandas中位数填充空值的实现示例》中位数填充是一种简单而有效的方法,用于填充数据集中缺失的值,本文就来介绍一下pandas中位数填充空值的实现,具有一定的参考价值,感兴趣的可以了解一下... 目录什么是中位数填充?为什么选择中位数填充?示例数据结果分析完整代码总结在数据分析和机器学习过程中,处理缺失数

Java学习手册之Filter和Listener使用方法

《Java学习手册之Filter和Listener使用方法》:本文主要介绍Java学习手册之Filter和Listener使用方法的相关资料,Filter是一种拦截器,可以在请求到达Servl... 目录一、Filter(过滤器)1. Filter 的工作原理2. Filter 的配置与使用二、Listen

Pandas统计每行数据中的空值的方法示例

《Pandas统计每行数据中的空值的方法示例》处理缺失数据(NaN值)是一个非常常见的问题,本文主要介绍了Pandas统计每行数据中的空值的方法示例,具有一定的参考价值,感兴趣的可以了解一下... 目录什么是空值?为什么要统计空值?准备工作创建示例数据统计每行空值数量进一步分析www.chinasem.cn处

Spring Boot中JSON数值溢出问题从报错到优雅解决办法

《SpringBoot中JSON数值溢出问题从报错到优雅解决办法》:本文主要介绍SpringBoot中JSON数值溢出问题从报错到优雅的解决办法,通过修改字段类型为Long、添加全局异常处理和... 目录一、问题背景:为什么我的接口突然报错了?二、为什么会发生这个错误?1. Java 数据类型的“容量”限制

Java对象转换的实现方式汇总

《Java对象转换的实现方式汇总》:本文主要介绍Java对象转换的多种实现方式,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Java对象转换的多种实现方式1. 手动映射(Manual Mapping)2. Builder模式3. 工具类辅助映

SpringBoot请求参数接收控制指南分享

《SpringBoot请求参数接收控制指南分享》:本文主要介绍SpringBoot请求参数接收控制指南,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Spring Boot 请求参数接收控制指南1. 概述2. 有注解时参数接收方式对比3. 无注解时接收参数默认位置

利用Python调试串口的示例代码

《利用Python调试串口的示例代码》在嵌入式开发、物联网设备调试过程中,串口通信是最基础的调试手段本文将带你用Python+ttkbootstrap打造一款高颜值、多功能的串口调试助手,需要的可以了... 目录概述:为什么需要专业的串口调试工具项目架构设计1.1 技术栈选型1.2 关键类说明1.3 线程模

SpringBoot基于配置实现短信服务策略的动态切换

《SpringBoot基于配置实现短信服务策略的动态切换》这篇文章主要为大家详细介绍了SpringBoot在接入多个短信服务商(如阿里云、腾讯云、华为云)后,如何根据配置或环境切换使用不同的服务商,需... 目录目标功能示例配置(application.yml)配置类绑定短信发送策略接口示例:阿里云 & 腾