今天想用js实现rsa的加解密的,在网上找了好久,下载啊什么的,十分麻烦,今天我也不bb的直接放代码

rsa.html

<!DOCTYPE html>
<html lang="zh-Cn"><head><title>javascript-rsa-Example</title><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><!-- 导入必要js文件 --><script src="jquery.js"></script><script src="jsencrypt.min.js"></script></head><body> <!-- 一个私钥的例子 --><textarea id="privkey" rows="15" cols="65" style="display: none;">-----BEGIN RSA PRIVATE KEY-----MIICXgIBAAKBgQDQ/Mgm9uPiUpmUvA4l/254RMPU55Vu7FVewhd1fjn8qKhvSo7BsYpY11MaUuIoSsSvnJcvg8x6kZU1I1ohB4IgkXQhsVsBstr+abLKBNebr5LX5qBnARlJ/ZZLrSlIi97c//86cJpmLOF94KzKI9vm98CHN32I7UxaBZs9epMDeQIDAQABAoGBAIAnQqWCKGQUutEWMKbkZ92gbWYVTPFkQ0WER9ZovS5OTltQoRHtySSJhhBSWxTSJKJ7p8ofTDitJY4cS5yNeiFaXdA3C/E+M0KgNOhTIkaKMh1KrkOrDvff3oIpTT40/g9fO8QorIWp0CRWVE+qEG8gHhFLnj5ST2jxqVChQPrBAkEA9bwlzWmNsWG6nCn/9Hh1IRzjZAHrle2H8gtiPYKScrzsvkNNlEA1vFoUFjfMWklvRTZQbpJE05rS7azAKicSzQJBANm3qWfG5jhUVrZtPeWZacu8kGs0n0lQ/c285CMwVU9aUu760HkTsiuK3WeJ31lOOVF6YbvZv60PZtQjx5Kb610CQAz9DOJ2mc6uY7atYaICW+6MIFjA4TrjezQH9gFaTXNTGRBVblxPqId0G2uxN1PuXbtCy62MfabRoCR/5QhVWGECQQCrKzdX7Mtxe/VUpZxlV/ESieStNIkK9k8kop5mgAiCQ8wyMSUYHAEXNK0PSxk7OEHeKi6OpwqIgDRjEuJEBKvNAkEA7hQfSDCuDl4Cf5apfUyMH6eY1WNMexyZFcp+1njbVLQRL9rtbEeTCuZ/vsrA94HwlGx0CmSrinl0sA+cZg25xQ==-----END RSA PRIVATE KEY-----</textarea><br/><!-- 一个公钥的例子 --><textarea id="pubkey" rows="15" cols="65" style="display: none;">-----BEGIN PUBLIC KEY-----MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDQ/Mgm9uPiUpmUvA4l/254RMPU55Vu7FVewhd1fjn8qKhvSo7BsYpY11MaUuIoSsSvnJcvg8x6kZU1I1ohB4IgkXQhsVsBstr+abLKBNebr5LX5qBnARlJ/ZZLrSlIi97c//86cJpmLOF94KzKI9vm98CHN32I7UxaBZs9epMDeQIDAQAB-----END PUBLIC KEY-----            </textarea><br/><label for="privateKey_out">生成的rsa私钥</label><textarea id="privateKey_out" rows="15" cols="65"></textarea><br/><label for="publicKey_out">生成的rsa公钥</label><textarea id="publicKey_out" rows="15" cols="65"></textarea><br/></body><script type="text/javascript">//*****这里开始介绍如何生成"密钥和公钥"!!!***********function getRsaKeys(func){window.crypto.subtle.generateKey({name: "RSA-OAEP",modulusLength: 2048, //可以是 1024, 2048, or 4096publicExponent: new Uint8Array([0x01, 0x00, 0x01]),hash: {name: "SHA-512"}, //可以是 "SHA-1", "SHA-256", "SHA-384", or "SHA-512"},true, //密钥是否可提取 (i.e. 可以在 exportKey中使用)["encrypt", "decrypt"] //一定要是["encrypt", "decrypt"] 或者 ["wrapKey", "unwrapKey"]).then(function(key){window.crypto.subtle.exportKey("pkcs8", key.privateKey ).then(function(keydata1){window.crypto.subtle.exportKey("spki",key.publicKey ).then(function(keydata2){var privateKey = RSA2text(keydata1,1);var publicKey = RSA2text(keydata2);func(privateKey,publicKey);}).catch(function(err){console.error(err);});}).catch(function(err){console.error(err);});}).catch(function(err){console.error(err);});}function RSA2text(buffer,isPrivate=0) {var binary = '';var bytes = new Uint8Array(buffer);var len = bytes.byteLength;for (var i = 0; i < len; i++) {binary += String.fromCharCode(bytes[i]);}var base64 = window.btoa(binary);var text = "-----BEGIN "+(isPrivate?"PRIVATE":"PUBLIC")+" KEY-----\n";text += base64.replace(/[^\x00-\xff]/g,"$&\x01").replace(/.{64}\x01?/g,"$&\n");text += "\n-----END "+(isPrivate?"PRIVATE":"PUBLIC")+" KEY-----";return text;}function displayRsaKeys(privateKey,publicKey) {privateKey_example1=privateKey;//得到rsa密钥和私钥!publicKey_example1=publicKey;document.getElementById("privateKey_out").innerHTML = privateKey_example1;//输出document.getElementById("publicKey_out").innerHTML = publicKey_example1;}getRsaKeys(displayRsaKeys);//*****这里开始介绍如何加解密!!!***********var example_public_key=$('#pubkey').val();//注意:密钥中含有“//”字符无法直接写不然会报错,所以用了html元素var example_private_key=$('#privkey').val();var example_text="我是一个要加密的文本";function encrypt1(public_key,sometext){//加密:需要两个参数public_key(公钥),sometext(要加密的文本)var encrypt = new JSEncrypt();encrypt.setPublicKey(public_key);var encrypted = encrypt.encrypt(sometext);return encrypted;}function decrypt1(private_key,encrypted_text) {//解密:需要两个参数private_key(私钥),encrypted_text(密文)var decrypt = new JSEncrypt();decrypt.setPrivateKey(private_key);var uncrypted = decrypt.decrypt(encrypted_text);return uncrypted;}var tmp01=encrypt1(example_public_key,example_text);document.write("<br>");document.write(tmp01);//输出一个加密document.write("<br>");tmp02=decrypt1(example_private_key,tmp01)document.write(tmp02);//输出一个解密</script>
</html>

生成完了后,可以去在线rsa网站上检测一下,RSA在线加解密

然后还需要在同一个文件夹下放入两个js文件,用于加解密!

下载链接:

rsa.zip - 蓝奏云

备用下载链接:

百度网盘 密码1234

参考文献:

travist/jsencrypt: (github.com)

js实现rsa密钥的加密、解密与生成相关推荐

  1. js rsa解密中文乱码,js中文rsa,中文加密偶尔解密不出来

    https://blog.csdn.net/lionking1990/article/details/106092990 直接改动jsencrypt.js文件,在文件最下方的 JSEncrypt.ve ...

  2. RSA、MD5加密解密算法全套解析安装教程

    第一部分介绍加密解密算法, 第二部分介绍我小组成功应用的RSA.MD5两种加密解密算法,以及心得体会. 1.加密解密算法介绍 应用的开发中安全很重要,所以信息加密技术显得尤为重要.我们需要对应用中的多 ...

  3. PHP通过OpenSSL生成证书、密钥并且加密解密数据,以及公钥,私钥和数字签名的理解...

    一.公钥加密 假设一下,我找了两个数字,一个是1,一个是2.我喜欢2这个数字,就保留起来,不告诉你们(私钥),然后我告诉大家,1是我的公钥. 我有一个文件,不能让别人看,我就用1加密了.别人找到了这个 ...

  4. Python crypto模块实现RSA和AES加密解密

    Python crypto模块实现RSA和AES加密解密 Python的crypto是用于RSA加密解密,AES加密解密的. 一.RSA和AES简介 RSA加密算法是一种非对称加密算法.RSA 是19 ...

  5. RSA算法与加密解密

    RSA算法与加密解密 什么是RSA算法(RSA algorithm) 什么是非对称加密算法 RSA加密解密原理 算法攻击和蓝桥杯2018年省赛题目 RSA的小指数攻击 蓝桥杯2018年省赛题目 第一步 ...

  6. js脚本锁计算机软件,JS使用插件cryptojs进行加密解密数据实例

    本文实例讲述了JS使用插件cryptojs进行加密解密数据.分享给大家供大家参考,具体如下: Testing websockets var key = 'BOTWAVEE'; //CBC模式加密 fu ...

  7. JS基于编码方式实现加密解密文本

    JS基于编码方式实现加密解密文本 严格来讲这是一种简单的编码方式:加密,将明文[注]转成编码.解密则是编码转码为明文本. [注:明文是指没有加密的文字(或者字符串),一般人都能看懂.] 下面源码用到 ...

  8. golang RSA (PKCS#1)加密解密

    RSA非对称加密算法,基于PKCS#1规范, 我们在使用RSA的时候需要提供 公钥和私钥 , 我们可以通过openss来为我们生成对应的pem格式的公钥和私钥匙. 关于pkcs相关标准如下,摘自百度: ...

  9. Linux C/C++ Openssl RSA Encrypt/Decrypt(加密/解密) 简单示例教程

    PEM文件有以下格式 1.PEM私钥文件格式 -----BEGIN RSA PRIVATE KEY----- -----END RSA PRIVATE KEY----- 生成该密钥的Linux命令 : ...

最新文章

  1. 【419天】跃迁之路——程序员高效学习方法论探索系列(实验阶段176-2018.03.31)...
  2. 微信小程序php后台支付,微信小程序 支付功能实现PHP实例详解
  3. 在Spring data中使用r2dbc
  4. 一卦,测一下我心里想的事
  5. django中的form.is_valid()总是返回False
  6. 你会换吗?报告称将有大批iPhone用户升级苹果5G新机
  7. 随想录(cmake编译)
  8. linq to sql 详
  9. c语言 屏幕亮度调节_4096级屏幕亮度调节:改善安卓机自动亮度调节顽疾
  10. 数控机床现场数据采集与边缘计算方案
  11. CAD转JPG如何才能清晰?来看这两个方法
  12. 罗马数字转换阿拉伯数字
  13. C# 蓝牙编程(InTheHand.Net.Personal.dll-32feet),教程地址
  14. Unity 将图片转换成 sprite 格式
  15. java如何编写spi接口_软件模拟SPI接口程序代码(4种模式)
  16. 计算机怎么弹奏消愁,明日之后盗将行钢琴谱分享
  17. 接收灵敏度的定义公式
  18. 什么是CUDA、什么是GPU?
  19. bzoj 4808: 马
  20. java打包exe实例(使用javapackager)

热门文章

  1. Open3D法线双边滤波, 利用法向信息提高点云滤波效果
  2. NKOJ-4223 彩色方块
  3. 2023同等学力申请硕士计算机综合国考
  4. 【万字总结】推荐几个常用数据可视化第三方库(附源码,建议收藏)
  5. LVS调度器(未完成)
  6. Sun服务器系统恢复出厂设置命令,sun服务器命令
  7. php网络电台,永久网络电台 V1.1 ACC/SQL全功能版 GB2312
  8. 场景设计在次时代游戏主流设计,必将引领游戏行业进入崭新的时代
  9. Axure VS Mockplus VS Balsamiq - 原型图设计工具对比
  10. 小功能⭐️解决Unity 3D UI遮挡穿透问题