IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 前端使用jsencrypt,进行RSA加密解密(处理长文本) -> 正文阅读

[JavaScript知识库]前端使用jsencrypt,进行RSA加密解密(处理长文本)

背景:项目涉及密码操作在向后端传输时是明文传输,不太安全,需要加密

在使用jsencrypt之前需要浅浅了解一下原理:

RSA加密算法是一种非对称加密算法,RSA加密使用了"一对"密钥.分别是公钥和私钥;一般是公钥加密,私钥解密。到这里其实就够开发使用了

首先我们需要有这两个密匙:

方式一:使用 openssl?生成密匙(需安装使用)

方式二:使用在线网站生成(可测试)===>?metools

?使用RSA加密:(需要公钥)

import JSEncrypt from 'jsencrypt'

    // RSA加密
    RSA(data) {
      const encryptor = new JSEncrypt() // 实例
      encryptor.setPublicKey( 'RSAKey' ) // 设置公匙
      return encryptor.encrypt(data) // 进行加密并返回加密后的字符串
    }

解密(需要私钥)

import JSEncrypt from 'jsencrypt'

    // RSA解密
    RSA(data) {
      const encryptor = new JSEncrypt() // 实例
      encryptor.setPrivateKey( 'RSAKey' ) // 设置私匙
      return encryptor.decrypt(data) // 进行加密并返回解密后的字符串
    }

问题:返回值为false

一、openssl生成的密匙可能会有格式问题,需要转化一下格式PKCS#1和PKCS#8

二、当字符串太长会有返回false的问题,提供一个处理长文本的方式:npm安装一个encryptlong

他会提供两个方法处理长文本

  • encryptLong()长文本加密
  • decryptLong()长文本解密

更多可以去此网站了解(含案例):encryptlong - npm (npmjs.com)

注:加密的值不能为空,空值也会返回false

vue登录实例:

<script>
import JSEncrypt from 'jsencrypt'

export default {
  name: 'Test',
  data() {
    return {
      userName: '张三',
      passWord: '123456',
      RSAKey: '公匙'
    }
  },
  methods: {
    // RSA加密
    RSA(data) {
      const encryptor = new JSEncrypt()
      encryptor.setPublicKey(this.RSAKey)
      return encryptor.encrypt(data)
    },
    // 登录方法
    longin() {
      const form = {}
      form.userName = this.RSA(this.userName)
      form.passWord = this.RSA(this.passWord)
      请求(form).then(res => {
        // 处理。。。
      })
    }
  }
}
</script>

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-07-21 21:27:19  更:2022-07-21 21:29:53 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/11 13:01:55-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码