当前位置: 首页 > news >正文

JS -RSA 明文加密--用户密码加密

1 配置文件引入 加密包 package.json

"jsencrypt": "^3.0.0-rc.1",

2 加密公钥配置

import { JSEncrypt } from 'jsencrypt'
import request from "@/utils/request";const RSA_PUBLIC_KEY = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCJVol0cJoJKA36lRJoCOe7IZNhWm/BY+zOumtVQ/uhw4+oIJQqbJ+xuAYED5VjUWGsKjqJWKAS1QuBpQNij+nUXUV1v7AB9r0ihBTwvvvVJSLOfEau6eeKEqnAW6X4bZvaexFKTxlAb7IumnlBoo8uP5bCyRt93BuseuHynoYrmwIDAQAB";//  加密
export function encryptedData(data) {// 新建JSEncrypt对象let encryptor = new JSEncrypt();// 设置公钥encryptor.setPublicKey(RSA_PUBLIC_KEY);// 加密数据return encryptor.encrypt(data);
};

3 前端请求 加密传输敏感数据


import { encryptedData } from "@/utils/auth";handleSubmit(e) {const { $store } = this;e.preventDefault();this.form.validateFields(async (err, values) => {if (!err) {await $store.dispatch({type: "login/sumbitLogin",params: {userInfo: encryptedData(values.userName),password: encryptedData(values.password)}});this.$router.push({ path: "/home" });}});}

4 后端接口 解密敏感数据

  final String loginName = RSAUtil.decrypt(userInfo, RSAUtil.DEFAULT_PRIVATE_KEY);

后端解密工具包

 package c;import org.apache.commons.codec.binary.Base64;import javax.crypto.Cipher;
import java.security.*;
import java.security.interfaces.RSAPrivateKey;
import java.security.interfaces.RSAPublicKey;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;
import java.util.HashMap;
import java.util.Map;/*** RSA 签名算法组件**  */
public class RSAUtil {public static String DEFAULT_PRIVATE_KEY = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAIlWiXRwmgkoDfqVEmgI57shk2Fab8Fj7M66a1VD+6HDj6gglCpsn7G4BgQPlWNRYawqOolYoBLVC4GlA2KP6dRdRXW/sAH2vSKEFPC++9UlIs58Rq7p54oSqcBbpfhtm9p7EUpPGUBvsi6aeUGijy4/lsLJG33cG6x64fKehiubAgMBAAECgYB1JrxZ9zNuXByQhFkPJYmGtz1g7iQmc3atYZftQ/CCLK9+W0wIZGBU2QVIsYJdFi6bDeqg/liNt+34ySn6CYkLrtEPhJ9WvTg81v1b2aMun91rL+HvnP3mx5xUqrzBZeY7YHaNAnIiX8XoYo1LgvpQlJqSeFZzMQIAKAwqsh7CAQJBAP8rO5O4ooGoyYLqj9d4GxVtj4/3Waf8ysNC7xc55jFJWFk2c/MU1f8ZXp3fduNSP7GMsDElIz3uAJGXBcbZwdMCQQCJyQ2r+LaEGq0MCSzHR+bjQI1CadvIhcQe4jf1EN6keaC6UVLyqT9sKbM6DAbArTxxtOb8TJyGfSmYDgbJkAoZAkEA3qd4ywOXOZBwlb3bWebBq0b4uGTbZMwemZd0TU4GYQdhAieTsY6C1J/sgdGWSfFhBqp+q8N+JvHgqSmgrs0gZQJAajhHxOrA8ciK3Tt5fMuucEUEYU2wdL7CubhVwSRXL17gjKJDGvVlAmKHW9mHnyQt886tP5VkGb4FwcYWb28OiQJAEPAasVoq+Cls2VFiFY3kZ8eEOYHxdamIIyNH9hFv07eZEyq63ZTXcbFhOwMeE5W2JowIbTVwmMkWT7pPSM9sXw==";public static String DEFALUT_PUBLIC_KEY = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCJVol0cJoJKA36lRJoCOe7IZNhWm/BY+zOumtVQ/uhw4+oIJQqbJ+xuAYED5VjUWGsKjqJWKAS1QuBpQNij+nUXUV1v7AB9r0ihBTwvvvVJSLOfEau6eeKEqnAW6X4bZvaexFKTxlAb7IumnlBoo8uP5bCyRt93BuseuHynoYrmwIDAQAB";/*** 随机生成密钥对* @throws NoSuchAlgorithmException*/public static Map<Integer, String> genKeyPair() throws NoSuchAlgorithmException {// KeyPairGenerator类用于生成公钥和私钥对,基于RSA算法生成对象KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA");// 初始化密钥对生成器,密钥大小为96-1024位keyPairGen.initialize(1024,new SecureRandom());// 生成一个密钥对,保存在keyPair中KeyPair keyPair = keyPairGen.generateKeyPair();RSAPrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate();   // 得到私钥RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic();  // 得到公钥String publicKeyString = new String(Base64.encodeBase64(publicKey.getEncoded()));// 得到私钥字符串String privateKeyString = new String(Base64.encodeBase64((privateKey.getEncoded())));// 将公钥和私钥保存到MapMap<Integer, String> keyMap = new HashMap<>();  //用于封装随机产生的公钥与私钥keyMap.put(0,publicKeyString);  //0表示公钥keyMap.put(1,privateKeyString);  //1表示私钥return keyMap;}/*** RSA公钥加密** @param str*            加密字符串* @param publicKey*            公钥* @return 密文* @throws Exception*             加密过程中的异常信息*/public static String encrypt( String str, String publicKey ) throws Exception{//base64编码的公钥byte[] decoded = Base64.decodeBase64(publicKey);RSAPublicKey pubKey = (RSAPublicKey) KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(decoded));//RSA加密Cipher cipher = Cipher.getInstance("RSA");cipher.init(Cipher.ENCRYPT_MODE, pubKey);return Base64.encodeBase64String(cipher.doFinal(str.getBytes("UTF-8")));}/*** RSA私钥解密** @param str*            加密字符串* @param privateKey*            私钥* @return 铭文* @throws Exception*             解密过程中的异常信息*/public static String decrypt(String str, String privateKey) throws Exception {//64位解码加密后的字符串byte[] inputByte = Base64.decodeBase64(str.getBytes("UTF-8"));//base64编码的私钥byte[] decoded = Base64.decodeBase64(privateKey);RSAPrivateKey priKey = (RSAPrivateKey) KeyFactory.getInstance("RSA").generatePrivate(new PKCS8EncodedKeySpec(decoded));//RSA解密Cipher cipher = Cipher.getInstance("RSA");cipher.init(Cipher.DECRYPT_MODE, priKey);return new String(cipher.doFinal(inputByte));}
}

相关文章:

JS -RSA 明文加密--用户密码加密

1 配置文件引入 加密包 package.json "jsencrypt": "^3.0.0-rc.1",2 加密公钥配置 import { JSEncrypt } from jsencrypt import request from "/utils/request";const RSA_PUBLIC_KEY "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCJVol0cJ…...

clickhouse中replacingMergeTree

ReplacingMergeTree是在MergeTree上添加了去重的功能&#xff0c;但是这个功能不可控&#xff0c;合并是一个后台的操作&#xff0c;除非手动触发&#xff0c;不然无法控制&#xff0c;并且它会删除具有相同(区内)主键的重复项。 特点&#xff1a; 1&#xff0c;去重时机不定&a…...

pdf怎么转换成word?

随着数字化时代的到来&#xff0c;PDF(Portable Document Format)已成为最受欢迎的文档格式之一&#xff0c;因其在各种设备上的可视性和稳定性而备受推崇。然而在某些情况下&#xff0c;将PDF转换为Word文档可能是必要的&#xff0c;这使得编辑、修改和重新格式化文本变得更加…...

汇编攻城记-Cortex-M3指令集

类型 指令 全称 功能 内存访问 LDR Load register 加载字到寄存器 LDRB 加载字节到寄存器 LDRH 加载半字到寄存器 LDRSH 加载半字到寄存器&#xff0c;再带符号扩展到32位 LDRD 从连续的地址空间加载双字&#xff08;64位整数&#xff09;到…...

大语言模型之五 谷歌Gemini

近十年来谷歌引领着人工智能方向的发展&#xff0c;从TensorFlow到TPU再到Transformer&#xff0c;都是谷歌在引领着&#xff0c;然而&#xff0c;在大语言模型上&#xff0c;却被ChatGPT&#xff08;OpenAI&#xff09;抢了风头&#xff0c;并且知道GPT-4&#xff08;OpenAI&a…...

使用selenium实现对页面元素的抓取

一、背景介绍 工作中有个需求是需要对某个页面进行监控&#xff0c;但由于要监控页面数据是异步加载的&#xff0c;因此很难从状态码和返回结果层面进行校验。于是乎想到了通过判断页面元素是否存在且显示内容是否正确来达到此目标。调研了一下发现selenium可以实现对这种动态…...

大数据课程K12——Spark的MLlib概述

文章作者邮箱:yugongshiye@sina.cn 地址:广东惠州 ▲ 本章节目的 ⚪ 了解Spark的MLlib概念; ⚪ 掌握Spark的MLlib基本数据模型; ⚪ 掌握Spark的MLlib统计量基础; 一、Spark MLlib介绍 1. 概述 MLlib是Apache Spark的可迭代机器学习库。 2. 易于使用 …...

流程制造智能工厂总体架构及建设路线规划方案PPT

本资料来源公开网络&#xff0c;仅供个人学习&#xff0c;请勿商用&#xff0c;如有侵权请联系删除&#xff0c;更多浏览公众号&#xff1a;智慧方案文库 数字孪生智能制造(智改数转)数字化架构设计及应用..水泥智能工厂解决方案.pptx智慧制造规划设计解决方案.pptx智能工厂落…...

网络有源号角(50W-100W)社区小区广播 工地语音播报,隧道广播,钢铁广播广播系统

网络有源号角&#xff08;50W-100W&#xff09;社区小区广播 工地语音播报&#xff0c;隧道广播&#xff0c;钢铁广播广播系统 SV-7042T 50W网络有源号角 SV-7042T是深圳锐科达电子有限公司的一款壁挂式网络有源号角&#xff0c;具有10/100M以太网接口&#xff0c;可将网络音…...

【Kali Linux高级渗透测试】深入剖析Kali Linux:高级渗透测试技术与实践

&#x1f4d5;作者简介&#xff1a;热爱跑步的恒川&#xff0c;致力于C/C、Java、Python等多编程语言&#xff0c;热爱跑步&#xff0c;喜爱音乐的一位博主。 &#x1f4d7;本文收录于恒川的日常汇报系列&#xff0c;大家有兴趣的可以看一看 &#x1f4d8;相关专栏C语言初阶、C…...

DHCP中继实验

文章目录 一、实验背景与目的二、实验拓扑三、实验需求四、实验解法1. 配置IP地址2.配置R1为DHCP服务器&#xff0c;能够跨网段为192.168.2.0/24网段自动分配IP地址3. 在PC3上Ping 192.168.1.1&#xff0c;确认可以Ping通 摘要&#xff1a; 本实验旨在通过配置DHCP中继实现跨网…...

C++进阶之多态

多态 多态的概念多态的定义及实现1.多态的构成条件2.虚函数3.虚函数的重写4.虚函数重写的两个例外5.C11 override 和 final6.重载、覆盖(重写)、隐藏(重定义)的对比 抽象类1.概念2.接口继承和实现继承 多态的原理1.虚函数表2.多态的原理3.动态绑定与静态绑定 单继承和多继承关系…...

QtCreator中三种不同编译版本 debug、release、profile 的区别

debug调试模式&#xff0c;编译后的可执行文件很大&#xff0c;带了很多调试符号信息等&#xff0c;方便开发阶段调试的时候进入具体的堆栈查看值。会打开所有的断言&#xff0c;运行阶段性能差速度慢&#xff0c;可能会有卡顿感觉。 release发布模式&#xff0c;编译后的可执…...

golang中map赋值

众所周知&#xff0c;golang中map是一个指针&#xff0c;既然是一个指针&#xff0c;那么参数传递、赋值应该都是指针传递&#xff0c;而下面的例子也印证了我的想法 package mainimport "fmt"func test_map2(m map[string]string) {fmt.Printf("inner: %v, %p…...

myspl使用指南

mysql数据库 使用命令行工具连接数据库 mysql -h -u 用户名 -p -u表示后面是用户名-p表示后面是密码-h表示后面是主机名&#xff0c;登录当前设备可省略。 如我们要登录本机用户名为root&#xff0c;密码为123456的账户&#xff1a; mysql -u root -p按回车&#xff0c;然后…...

【深度学习_TensorFlow】过拟合

写在前面 过拟合与欠拟合 欠拟合&#xff1a; 是指在模型学习能力较弱&#xff0c;而数据复杂度较高的情况下&#xff0c;模型无法学习到数据集中的“一般规律”&#xff0c;因而导致泛化能力弱。此时&#xff0c;算法在训练集上表现一般&#xff0c;但在测试集上表现较差&…...

uniapp授权小程序隐私弹窗效果demo(整理)

<template> <view class"dealBox"><view class"txtBox padding10"><!-- 查看协议 -->在您使用施工现场五星计划小程序之前&#xff0c;请仔细阅读<text class"goToPrivacy" click"handleOpenPrivacyContract&qu…...

c++学习之string实现

字符串 - C引用 (cplusplus.com)这里给出标准官方的string实现&#xff0c;可以看到设计还是较为复杂的&#xff0c;有成员函数&#xff0c;迭代器&#xff0c;修饰符&#xff0c;容量&#xff0c;元素访问&#xff0c;字符串操作等&#xff0c;将字符尽可能的需求都设计出来&a…...

kubevirt虚机创建svc通过NodePort的方式暴露端口

背景 存在kubevit存在的三个虚机&#xff1a; ubuntu-4tlg7 7d22h Running True ubuntu-7kgrk 7d22h Running True ubuntu-94kg2 7d22h Running True 网络没有做透传&#xff0c;pod也不是underlay网络想要通过NodePort方式暴露虚机22端口进行远程登录。 …...

Elasticsearch终端命令行用法大全

API作用使用场景curl localhost:9200/_cluster/health?pretty查看ES健康状态curl localhost:9200/_cluster/settings?pretty查看ES集群的设置其中persistent为永久设置&#xff0c;重启仍然有效&#xff1b;trainsient为临时设置&#xff0c;重启失效curl localhost:9200/_ca…...

安防弱电智能化VISIO图例实战指南:从入门到精通的设计技巧

1. VISIO在安防弱电设计中的核心价值 第一次接触安防弱电智能化设计时&#xff0c;我被各种复杂的系统连接关系搞得头晕眼花。直到发现VISIO这个神器&#xff0c;才真正体会到什么叫"一图胜千言"。不同于普通CAD软件&#xff0c;VISIO最大的优势在于它专为系统图设计…...

从滤波到故障诊断:手把手教你用MATLAB实现信号互相关分析的实际项目

从振动信号到故障定位&#xff1a;MATLAB互相关分析的工业实战指南 车间里那台大型离心泵的异常振动已经持续两周了。王工程师带着加速度传感器采集了三组不同位置的振动信号&#xff0c;屏幕上跳动的波形看起来杂乱无章。"到底是轴承磨损还是叶轮不平衡&#xff1f;"…...

Attu可视化工具:向量数据库性能监控与运维效率提升实践

Attu可视化工具&#xff1a;向量数据库性能监控与运维效率提升实践 【免费下载链接】attu The Best GUI for Milvus 项目地址: https://gitcode.com/gh_mirrors/at/attu Attu作为Milvus向量数据库的图形化管理界面&#xff0c;通过系统监控工具、性能分析仪表盘和可视化…...

League Akari:英雄联盟玩家的智能游戏伴侣,如何用开源工具提升你的竞技体验

League Akari&#xff1a;英雄联盟玩家的智能游戏伴侣&#xff0c;如何用开源工具提升你的竞技体验 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power &#x1f680;. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit …...

无人驾驶车辆轨迹跟踪MPC、LQR、PP算法对比仿真(带说明文档)

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。&#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室&#x1f447; 关注我领取海量matlab电子书和…...

5分钟打造个人游戏库:FitGirl Repack Launcher高效管理方案

5分钟打造个人游戏库&#xff1a;FitGirl Repack Launcher高效管理方案 【免费下载链接】Fitgirl-Repack-Launcher An Electron launcher designed specifically for FitGirl Repacks, utilizing pure vanilla JavaScript, HTML, and CSS for optimal performance and customiz…...

linux下的spi子系统

概念通信模式可以分为单工、半双工和全双工&#xff0c;单工通信指信号只在一个方向上传输&#xff0c;仅 能发送或接收&#xff0c;而半双工通信指信号可以在俩个方向上传输&#xff0c;但某一个时刻只允许发送或接收&#xff0c;而全双工通信指数据同时在俩个方向上传输&…...

乙巳马年春联生成终端效果展示:扫码下载功能在微信生态中的无缝流转

乙巳马年春联生成终端效果展示&#xff1a;扫码下载功能在微信生态中的无缝流转 1. 引言&#xff1a;当传统年俗遇见现代科技 春节贴春联&#xff0c;是刻在我们文化基因里的仪式感。但你想过吗&#xff0c;这个传承千年的习俗&#xff0c;也能和今天最前沿的AI技术碰撞出火花…...

Polars 2.0清洗稳定性生死线:当lazy.eval()遭遇OOM崩溃,这3个编译期优化参数必须重置!

第一章&#xff1a;Polars 2.0清洗稳定性生死线&#xff1a;当lazy.eval()遭遇OOM崩溃&#xff0c;这3个编译期优化参数必须重置&#xff01;在 Polars 2.0 中&#xff0c;lazy.eval() 的执行模型已深度耦合 Rust 编译期查询优化器&#xff08;QO&#xff09;&#xff0c;但默认…...

iOS高级开发工程师技术体系与民航行业实践深度解析

第一章 iOS开发技术核心体系 1.1 Swift与Objective-C双语言生态 现代iOS开发需要掌握两种核心语言的技术特点: // Swift类型安全示例 enum FlightStatus {case scheduled, departed, landed, canceled }var currentStatus: FlightStatus = .scheduled// 编译器会阻止非法状…...