前端RSA加解密(支持超长分段)

    过程不复杂, 只是网上结合后端的RSA加解密资料参差不齐, 比较零散, 而且大多博文都是基于最原始的RSA加解密, 当加解密参数过长的时候, 会报[Message too long for RSA]

    解决方案, 找了一圈, 都不大完整, 完整的又很复杂, 加了一堆方法, 看着都头疼! 其实加解密的本质都一样的, 无非就是加解的过程问题, 我们知道加密过程, 那解密就是反推的事儿.

    在此记录下, 方便自己和有需要的小伙伴能够快速找到!  什么原理什么逻辑就不废话了, 直接上代码!

<!DOCTYPE html>
<html>
<head><title>aes demo</title><meta http-equiv="Content-Type" content="text/html" charset="gbk"/><style>*{margin:0;padding:0}.demo-wrap{width: 600px;height: 50px;margin: 50px auto auto auto}</style><script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.1.1/crypto-js.min.js"></script><script src="http://passport.cnblogs.com/scripts/jsencrypt.min.js"></script>
</head>
<body>
<div class="demo-wrap"><div  style="padding: 1rem 0"><button type="button" onclick="rsa_encrypt()">RSA加密</button><br/>加密后的数据:<label id="rsa_encrypted"></label></div><div><button type="button" onclick="rsa_decrypt()">RSA解密</button><br/>解密后的数据:<label id="rsa_decrypted"></label></div>
</div><script type="text/javascript">function rsa_encrypt() {var data = "张三, 你好啊!";var publicKey = "-----BEGIN PUBLIC KEY-----自己的公钥-----END PUBLIC KEY-----";var en = new JSEncrypt();en.setPublicKey(publicKey);let num = Math.ceil(data.length/117)let dataArr = [];for(let i=0;i<num;i++){if (parseInt(117*(i+1))<=data.length) {dataArr[i] = data.substring(117*i,117*(i+1));} else {dataArr[i] = data.substring(117*i,data.length);}dataArr[i] = CryptoJS.enc.Base64.parse(en.encrypt(dataArr[i]));}document.getElementById("rsa_encrypted").innerHTML = CryptoJS.enc.Base64.stringify(CryptoJS.enc.Hex.parse(dataArr.join('')));}function rsa_decrypt() {var data = "NdaCEc2HCEgTk1OQoWbfvj0KZwaKTDfn9CSpskkuHYZe2hEW0t72WwmXQOGHoLz9rqSm4uqbYT4uBrCky8WQFZHEdEsIwqk1YK2vatgaRgqb7cW7UxGrxsR8fqtYICTZlfju9TvNWGoTsJVJR+etMiVpEF4kshuKx1V2I9QM8ps=";data = CryptoJS.enc.Hex.stringify(CryptoJS.enc.Base64.parse(data));var privateKey = "-----BEGIN RSA PRIVATE KEY-----自己的私钥-----END RSA PRIVATE KEY-----";var en = new JSEncrypt();en.setPrivateKey(privateKey);let num = Math.ceil(data.length/256);let dataArr = [];for(let i=0;i<num;i++){if (parseInt(256*(i+1))<=data.length) {dataArr[i] = data.substring(256*i,256*(i+1));} else {dataArr[i] = data.substring(256*i,data.length);}dataArr[i] = en.decrypt(CryptoJS.enc.Base64.stringify(CryptoJS.enc.Hex.parse(dataArr[i])));}document.getElementById("rsa_decrypted").innerHTML = dataArr.join('');}</script>
</body>
</html>

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

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

相关文章

今日AI资讯-20240615

1. Follow Your Emoji 一键让照片变表情包 腾讯混元联合港科大、清华大学联合推出肖像动画生成框架Follow Your Emoji&#xff0c;可以通过人脸骨架信息生成任意风格的脸部动画&#xff0c;一键创建表情包。基于算法革新和数据积累&#xff0c;Follow Your Emoji可以支持对脸部…

中电金信:银行业数据中心何去何从

20多年前&#xff0c;计算机走进国内大众视野&#xff0c;计算机行业迎来在国内的高速发展时代。银行业是最早使用计算机的行业之一&#xff0c;也是计算机技术应用最广泛、最深入的行业之一。近年来&#xff0c;随着银行竞争加剧&#xff0c;科技如何引领业务、金融科技如何发…

聊聊DoIP吧(三)-端口号port

DoIP在UDP和TCP建立连接和发送诊断报文的过程中使用的端口定义如下&#xff1a;

【会议】一张图片讲清楚:项目启动会议

另附上启动会前需要准备的内容&#xff1a;

Windows10笔记本如何系统重装?64位电脑重装系统需小心!一键安装超详细步骤!

在日常生活和工作中&#xff0c;我们有时会遇到Windows 10笔记本系统运行缓慢、频繁出现错误或受到病毒攻击等问题。这时&#xff0c;重装系统就成了解决这些问题的最佳选择。然而&#xff0c;对于许多用户来说&#xff0c;尤其是64位电脑用户&#xff0c;重装系统可能是一项既…

18、24年--信息系统工程——系统集成

1、集成基础 系统集成的工作再信息系统项目建设中非常重要,它通过硬件平台、网络通信平台、数据库平台、工具平台、应用软件平台将各类资源有机、高效地集成到一起,形成一个完整的工作台面。系统集成工作的好坏对系统开发、维护有极大的影响。因此,在技术上需要遵循的基本原…

树结构与算法-杨辉三角形的两种实现

什么是杨辉三角形 本文旨在讨论普通杨辉三角形的两种实现方式&#xff1a;迭代法和递归法。我们不详细讲解杨辉三角形的数学问题&#xff0c;只研究其代码实现。 杨辉三角形大致如下图&#xff1a; 杨辉三角形的规律 通过对杨辉三角形的图形分析&#xff0c;我们可以看到这几点…

[JavaScript]何为变量提升?

【版权声明】未经博主同意&#xff0c;谢绝转载&#xff01;&#xff08;请尊重原创&#xff0c;博主保留追究权&#xff09; https://blog.csdn.net/m0_69908381/article/details/139742129 出自【进步*于辰的博客】 关于编译与解释&#xff0c;详述可查阅博文《[Java]知识点》…

泛微开发修炼之旅--17基于Ecology短信平台,实现后端自定义二开短信发送方案及代码示例

文章链接&#xff1a;17基于Ecology短信平台&#xff0c;实现后端自定义二开短信发送方案及代码示例

《山西教育》教学版是什么级别的刊物?

《山西教育》教学版是什么级别的刊物&#xff1f; 《山西教育(教学版)》创刊于1956年&#xff0c;是由山西教育报刊社主办的教学刊物。山西省一级期刊&#xff0c;是“宣传教育政策&#xff0c;关注教育热点&#xff0c;传播先进经验&#xff0c;提供教改资讯”的权威性期刊&a…

[深度学习]--分类问题的排查错误的流程

原因复现&#xff1a; 原生的.pt 好使&#xff0c; 转化后的 CoreML不好使&#xff0c; 分类有问题。 yolov8 格式的支持情况 Format Argument Suffix CPU GPU 0 PyTorch - .pt True True 1 Tor…

HQChart实战教程73-仿tradingview指标MACD

HQChart实战教程73-仿tradingview指标MACD MACD![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/84d180b5620940f6b9fe08c6f10eb0f3.png)麦语法脚本实心MACD指标脚本效果 空心MACD指标脚本效果图 自定义指标添加到系统指标里HQChart插件源码地址 MACD tradingview中…

在Windows环境下设置定时任务(任务计划程序)(Python)

文章目录 前言一、准备执行的test.py文件二、准备test.bat批处理文件&#xff08;系统环境变量&#xff09;三、设置定时任务&#xff08;任务计划程序&#xff09; 前言 计划任务是系统的常见功能&#xff0c;利用任务计划功能&#xff0c;可以将任何脚本、程序或文档安排在某…

自研一套带双向认证的Android通用网络库

当前&#xff0c;许多网络库基于Retrofit或OkHttp开发&#xff0c;但实际项目中常需要定制化&#xff0c;并且需要添加类似双向认证等安全功能。这意味着每个项目都可能需要二次开发。那么&#xff0c;有没有一种通用的封装方式&#xff0c;可以满足大多数项目需求&#xff1f;…

基于Spring框架的应用:构建企业级应用的业务逻辑层

引言 在现代软件开发中&#xff0c;尤其是企业级应用程序开发中&#xff0c;选择合适的框架至关重要。Spring框架&#xff0c;作为一个轻量级的Java开发框架&#xff0c;旨在解决企业级应用开发中的耦合问题。本文将深入探讨Spring框架的核心组件之一——业务逻辑层&#xff0…

怎么制作酒店订房功能

在这个快节奏的时代&#xff0c;每一次旅行都如同一次心灵的远航。而酒店&#xff0c;作为旅途中的“避风港”&#xff0c;它的选择显得尤为重要。你是否曾在忙碌的行程中&#xff0c;为了寻找一家心仪的酒店而焦头烂额&#xff1f;是否曾在深夜的街头&#xff0c;为了找到一个…

美式动漫效果PS图层样式

对于追求独特艺术风格和创意的摄影师和设计师来说&#xff0c;一款能够轻松将照片转化为卡通效果的Photoshop模板无疑是一个强大的工具。这款由专业团队精心打造的模板&#xff0c;特别注重于美式动漫风格的呈现&#xff0c;让您的照片瞬间拥有生动且充满魅力的动漫色彩。 模板…

elementPlus+vite 定制化主题色

导读&#xff1a;在使用elementPlus组件库的过程中&#xff0c;可以自定义样式&#xff08;比如主题色&#xff09;修改默认样式&#xff0c;导入定制化样式文件进行样式覆盖 1、新建样式文件 1.1 新建 styles/element/index.scss 自定义项目主题色 // 重写项目主题色 forwa…

odoo 定时备份

odoo10 定时备份&#xff0c;每天备份一次&#xff0c;每七天删除一次 #!/bin/bash# vars BACKUP_DIR~/odoo_backups ODOO_DATABASEdb1 ADMIN_PASSWORDsuperadmin_passwd# create a backup directory mkdir -p ${BACKUP_DIR}# create a backup curl -X POST \-F "master_…

2台nginx只需配置一台,另外一台直接生效

配置文件更新与应用重启脚本使用指南 需求说明 需要一个脚本来完成以下任务&#xff1a; 修改 /data/THS/conf/httpserver.conf 文件后重启本地应用。将 /data/THS/conf/httpserver.conf 文件拷贝到远程服务器 192.142.8.82 的 /data/THS/conf/ 目录下&#xff0c;覆盖远程的…