RSA加密---前端---后端解密

简介: RSA加密---前端加---后端解密

前端使用vue

RSA

准备工作

官网

jsencrypt :http://travistidwell.com/jsencrypt/

encryptlong:https://www.npmjs.com/package/encryptlong

1,安装

1.1 安装jsencrypt,执行以下命令

npm install jsencrypt

1.2 安装encryptlong,执行以下命令:

npm i  encryptlong  -S

2、开始--在导入包后在前端的工具库中直接封装RSA方法

代码

importJSEncryptfrom'jsencrypt';
/** * RSA公共加密方法-----单体版本 * @param value * @returns {string | false} * @constructor */exportfunctionRSA(value) {
constpublicKey="密钥";
constencrypt=newJSEncrypt();
encrypt.setPublicKey(publicKey);
consttest=encrypt.encrypt(value);
returntest}
/** * RSA公共加密方法-------数组+单体版本 * @param value * @returns {string | false} * @constructor */exportfunctionRSA(value) {
// RSA公钥constpublicKey="MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqAc0oxV0IW8wTjKVd/bI"+"IvI2/o9c12ACq9FceDI8t5Z0GYOL7rAoL9/v6ev6MwzFzLyLaQhAGR6qV8AFQu1s"+"mwIDAQAB";
constencryptor=newJSEncrypt();
encryptor.setPublicKey(publicKey);
// 如果传入的值是数组,则对数组中的每个元素进行加密if (Array.isArray(value)) {
constencryptedArray= [];
value.forEach((item) => {
constencryptedValue=encryptor.encrypt(item);
encryptedArray.push(encryptedValue);
    });
returnencryptedArray;
  } else {
// 如果传入的值是单个值,则直接对其进行加密constencryptedValue=encryptor.encrypt(value);
returnencryptedValue;
  }
}

在封装完成方法之后在前端的main方法中直接注入!注入后直接可在前端任意方法中调用这个共有的方法。

注入!!!!!

//自定义RSA加密
import {RSA} from "./utils/index";
Vue.prototype.RSA = RSA

3、使用实例

submit() {
constencryptedPhone=this.RSA(ts.ruleForm.phone);
constencryptedPersonNo=this.RSA(ts.ruleForm.personNo);
constencryptedPassword=this.RSA(ts.ruleForm.collectionPassword);
letapiUrl="";
letparam= {
authorizedPerson: ts.ruleForm.authorizedPerson,
personNo: encryptedPersonNo,
phone: encryptedPhone,
departmentId: ts.ruleForm.departmentId,
educationDegree: ts.ruleForm.educationDegree,
qualificationNo: ts.ruleForm.qualificationNo,
certificateValidity: ts.ruleForm.certificateValidity,
authorizationValidity: ts.ruleForm.authorizationValidity,
collectionPassword: encryptedPassword,
annexFormId: ts.ruleForm.annexFormId,
authTypes: ts.ruleForm.authTypes,
rpAuthType: ts.ruleForm.rpAuthType,
trainScore: ts.ruleForm.trainScore,
      };
if (this.addFlg==0) {
apiUrl="application/ca/add";
      } else {
apiUrl="application/ca/edit";
param.id=this.formId;
      }
this.appHttp({
url: this.appHttp.adornAppRequestUrl(apiUrl),
method: "post",
data: this.appHttp.adornData(param),
headers: {
"Content-Type": "application/json", // 添加请求头,明确指定请求体为 JSON 格式        },
      }).then(({data}) => {
if (data.code==40000) {
ts.$message({
message: data.msg,
type: "success",
          });
this.processShell.reloadPage({
flowCode: "collection.authorization",
formId: data.id,
          });
        } else {
ts.$message.error(data.msg);
        }
      });
    },

4、Java后端代码

在Java中封装解密工具类RsaUtil后直接调用就可

importjava.nio.charset.StandardCharsets;
importjava.security.KeyFactory;
importjava.security.PrivateKey;
importjava.security.spec.PKCS8EncodedKeySpec;
importjava.util.Base64;
/*** @Author 薛千凝* @Date 2023/8/16 17:24*/publicclassRsaUtil {
// 解密密码字段publicstaticStringdecryptPassword(StringcollectionPassword) {
try {
// 获取私钥字符串,这里假设私钥存在 privateKeyStr 变量中StringprivateKeyStr="密钥";
// 解码私钥字符串为字节数组byte[] privateKeyBytes=Base64.getDecoder().decode(privateKeyStr);
// 构造 PKCS8EncodedKeySpec 对象PKCS8EncodedKeySpeckeySpec=newPKCS8EncodedKeySpec(privateKeyBytes);
// 获取 RSA 密钥工厂实例KeyFactorykeyFactory=KeyFactory.getInstance("RSA");
// 生成私钥对象PrivateKeyprivateKey=keyFactory.generatePrivate(keySpec);
// 创建解密器Ciphercipher=Cipher.getInstance("RSA/ECB/PKCS1Padding");
cipher.init(Cipher.DECRYPT_MODE, privateKey);
// 解密byte[] decryptedPasswordBytes=cipher.doFinal(Base64.getDecoder().decode(collectionPassword));
// 转换为字符串StringdecryptedPassword=newString(decryptedPasswordBytes, StandardCharsets.UTF_8);
returndecryptedPassword;
        } catch (Exceptione) {
e.printStackTrace();
returnnull;
        }
    }
}
目录
相关文章
|
1月前
|
JavaScript 前端开发 Java
制造业ERP源码,工厂ERP管理系统,前端框架:Vue,后端框架:SpringBoot
这是一套基于SpringBoot+Vue技术栈开发的ERP企业管理系统,采用Java语言与vscode工具。系统涵盖采购/销售、出入库、生产、品质管理等功能,整合客户与供应商数据,支持在线协同和业务全流程管控。同时提供主数据管理、权限控制、工作流审批、报表自定义及打印、在线报表开发和自定义表单功能,助力企业实现高效自动化管理,并通过UniAPP实现移动端支持,满足多场景应用需求。
177 1
|
24天前
|
存储 消息中间件 前端开发
PHP后端与uni-app前端协同的校园圈子系统:校园社交场景的跨端开发实践
校园圈子系统校园论坛小程序采用uni-app前端框架,支持多端运行,结合PHP后端(如ThinkPHP/Laravel),实现用户认证、社交关系管理、动态发布与实时聊天功能。前端通过组件化开发和uni.request与后端交互,后端提供RESTful API处理业务逻辑并存储数据于MySQL。同时引入Redis缓存热点数据,RabbitMQ处理异步任务,优化系统性能。核心功能包括JWT身份验证、好友系统、WebSocket实时聊天及活动管理,确保高效稳定的用户体验。
99 3
PHP后端与uni-app前端协同的校园圈子系统:校园社交场景的跨端开发实践
|
2月前
|
前端开发 Java 物联网
智慧班牌源码,采用Java + Spring Boot后端框架,搭配Vue2前端技术,支持SaaS云部署
智慧班牌系统是一款基于信息化与物联网技术的校园管理工具,集成电子屏显示、人脸识别及数据交互功能,实现班级信息展示、智能考勤与家校互通。系统采用Java + Spring Boot后端框架,搭配Vue2前端技术,支持SaaS云部署与私有化定制。核心功能涵盖信息发布、考勤管理、教务处理及数据分析,助力校园文化建设与教学优化。其综合性和可扩展性有效打破数据孤岛,提升交互体验并降低管理成本,适用于日常教学、考试管理和应急场景,为智慧校园建设提供全面解决方案。
274 70
|
7月前
|
存储 监控 前端开发
如何实现前端框架数据驱动方式的数据加密存储?
实现前端框架数据驱动方式的数据加密存储需要综合考虑多个因素,包括加密算法的选择、密钥管理、传输安全、服务器端处理等。通过合理的设计和实施,能够有效提高数据的安全性,保护用户的隐私和敏感信息。但需要注意的是,前端加密存储不能完全替代后端的安全措施,后端的安全防护仍然是不可或缺的。
160 53
|
3月前
|
JSON 自然语言处理 前端开发
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
187 72
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
|
3月前
|
前端开发 算法 NoSQL
前端uin后端php社交软件源码,快速构建属于你的交友平台
这是一款功能全面的社交软件解决方案,覆盖多种场景需求。支持即时通讯(一对一聊天、群聊、文件传输、语音/视频通话)、内容动态(发布、点赞、评论)以及红包模块(接入支付宝、微信等第三方支付)。系统采用前后端分离架构,前端基于 UniApp,后端使用 PHP 框架(如 Laravel/Symfony),配合 MySQL/Redis 和自建 Socket 服务实现高效实时通信。提供用户认证(JWT 集成)、智能匹配算法等功能,助力快速上线,显著节约开发成本。
86 1
前端uin后端php社交软件源码,快速构建属于你的交友平台
|
2月前
|
监控 前端开发 小程序
陪练,代练,护航,代打小程序源码/前端UNIAPP-VUE2.0开发 后端Thinkphp6管理/具备家政服务的综合型平台
这款APP通过技术创新,将代练、家政、娱乐社交等场景融合,打造“全能型生活服务生态圈”。以代练为切入点,提供模块化代码支持快速搭建平台,结合智能匹配与技能审核机制,拓展家政服务和商业管理功能。技术架构具备高安全性和扩展性,支持多业务复用,如押金冻结、录屏监控等功能跨领域应用。商业模式多元,包括交易抽成、增值服务及广告联名,同时设计跨领域积分体系提升用户粘性,实现生态共生与B端赋能。
198 12
|
4月前
|
监控 前端开发 Java
构建高效Java后端与前端交互的定时任务调度系统
通过以上步骤,我们构建了一个高效的Java后端与前端交互的定时任务调度系统。该系统使用Spring Boot作为后端框架,Quartz作为任务调度器,并通过前端界面实现用户交互。此系统可以应用于各种需要定时任务调度的业务场景,如数据同步、报告生成和系统监控等。
123 9
|
7月前
|
存储 前端开发 安全
如何确保前端框架数据驱动方式的数据加密存储的兼容性?
确保前端框架数据驱动方式的数据加密存储的兼容性需要综合考虑多个因素,通过充分的评估、测试、关注和更新,以及与其他技术的协调配合,来提高兼容性的可靠性,为用户提供稳定和安全的使用体验。
145 52
|
5月前
|
前端开发 NoSQL Java
【Java若依框架】RuoYi-Vue的前端和后端配置步骤和启动步骤
本文介绍了如何配置和启动基于Java的若依(RuoYi)项目,涵盖后端和前端的详细步骤。首先,准备Redis、MySQL以及IDE(如Idea和VS)。接着,通过GitHub获取代码并导入到IDE中,执行必要的SQL文件和配置数据库密码。然后,启动Redis并进行相关配置。最后,按照前端配置步骤克隆前端代码库,打开终端执行命令完成前端配置。整个过程详细记录了每一步的操作,帮助开发者顺利部署若依项目。 如果你觉得有帮助,请点赞、关注和收藏,这将是我持续分享的动力!
2249 2