首页 > 其他分享 >js解密日记3 jsentrypt带给我的困扰

js解密日记3 jsentrypt带给我的困扰

时间:2023-09-20 23:03:09浏览次数:44  
标签:加密 示例 Python 解密 js ----- jsentrypt

随着技术的不断进步,保护敏感数据已成为开发者的首要任务之一。加密是一种保护数据的方法,JSenCrypt 是一款流行的加密库,提供了 HTML、Python 和 Node.js 版本。本文将探讨每个版本的特点、优点、缺点,并提供代码示例来演示它们的用法。

jsentrypt HTML 版本

优点:

  1. 客户端加密: jsentrypt HTML 版本允许在客户端的 Web 浏览器中直接进行加密。这确保了数据在到达服务器之前就保持了机密性。
  2. 易于使用: 它非常容易实现。只需在 HTML 文件中包含 JavaScript 库,就可以轻松开始加密和解密数据。

缺点:

  1. 有限的安全性: 由于加密发生在客户端,可能不像服务器端加密方法那样安全。恶意用户可能会操纵代码或拦截数据。
  2. 浏览器兼容性: 它严重依赖于浏览器的 JavaScript 功能,不同浏览器之间可能存在差异。

代码示例:

以下是如何在 HTML 中使用 JSenCrypt 的基本示例:

<script src="jsencrypt.min.js"></script>
<script>
  const encrypt = new JSEncrypt();
  encrypt.setPublicKey('-----BEGIN PUBLIC KEY-----\nYourPublicKeyHere\n-----END PUBLIC KEY-----');
  const encryptedData = encrypt.encrypt('Hello, world!');
  console.log(encryptedData);
</script>

jsentrypt Python 版本

优点:

  1. 多用途: jsentrypt Python 版本可用于各种 Python 应用程序,包括 Web 服务、桌面应用程序等。
  2. 安全性: Python 提供了比客户端 JavaScript 更强大的安全功能。适用于服务器端加密任务。

缺点:

  1. 复杂性: 使用 Python 版本可能需要比 HTML 更多的配置和设置。
  2. 服务器开销: 服务器端加密可能会消耗更多的服务器资源,可能会降低性能。

代码示例:

以下是使用 jsentrypt 的 Python 代码示例:

from jsencrypt import JSEncrypt
encryptor = JSEncrypt()
encryptor.set_public_key("-----BEGIN PUBLIC KEY-----\nYourPublicKeyHere\n-----END PUBLIC KEY-----")
encrypted_data = encryptor.encrypt("Hello, world!")
print(encrypted_data)

jsentrypt Node.js 版本

优点:

  1. 服务器端加密: jsentrypt Node.js 版本专为服务器端加密任务设计,相对于客户端解决方案更安全。
  2. 集成性: 它可以无缝集成到 Node.js 应用程序中,适用于各种基于服务器的场景。

缺点:

  1. 复杂性: Node.js 版本可能需要更多关于 Node.js 及其模块的高级知识。
  2. 服务器资源: 与 Python 版本类似,服务器端加密可能会消耗服务器资源。

代码示例:

以下是使用 jsentrypt 的 Node.js 示例:

const { JSEncrypt } = require('jsen-crypt');
const encryptor = new JSEncrypt();
encryptor.setPublicKey('-----BEGIN PUBLIC KEY-----\nYourPublicKeyHere\n-----END PUBLIC KEY-----');
const encryptedData = encryptor.encrypt('Hello, world!');
console.log(encryptedData);

结论

这个加密困扰了我一整天,想了各种办法用python来实现,但是因为需要自定义keysize等参数,一直无解。最后解决方案只能用python+nodejs的办法解决。

这里说一下中间有用到的一个一键在线js解密的网站,代码复制进去点击解密就行,简单的加密都是一键就解开了。

标签:加密,示例,Python,解密,js,-----,jsentrypt
From: https://blog.51cto.com/u_15785573/7544086

相关文章

  • 一文彻底搞懂JS函数柯里化
    函数柯里化是一种强大的函数式编程技术,它使我们能够预设函数的参数,创建新的函数,并在需要的时候执行这些函数。这个技术提供了强大的代码复用和组合能力,使我们的代码变得更简洁、更具可读性。什么是函数柯里化?函数柯里化(Currying)是在函数式编程中常用的技术,它的基本思想是将......
  • delphi JSON序列化(四)
    {TDateTimeConverter}functionTDateTimeConverter.CanConvert(ATypeInf:PTypeInfo):Boolean;beginResult:=True;end;functionTDateTimeConverter.ReadJson(constAReader:TJsonReader;ATypeInf:PTypeInfo;constAExistingValue:TValue;constASerial......
  • 使用js开发一个快速打开前端项目的alfred插件
    使用js开发一个快速打开前端项目的插件目录前言使用的技术栈步骤问题发现待优化前言一直以来开发都是先打开vscode,然后选择项目,在项目多的情况下会觉得挺繁琐;如果同时打开了许多vscode窗口,寻找目标窗口也比较麻烦,于是萌生了开发一个alfred的工作流插件的想法,目标是在alf......
  • Three.js中实现对InstanceMesh的碰撞检测
    1.概述之前的文章提到,在Three.js中使用InstanceMesh来实现性能优化,可以实现单个Mesh的拾取功能那,能不能实现碰撞检测呢?肯定是可以的,不过Three.js中并没有直接的API可以实现对InstanceMesh的碰撞检测,需要手动实现回顾本文的描述的Three.js的场景前提:使用InstanceMesh来构建数......
  • javaweb运行tomcat时Jsp文件显示源码
    今天在写javaweb项目的时候出现了运行一直不打开浏览器,如果手动打开浏览器的话,就会出现自己写的jsp文件中的所有源码,具体如图所示我的问题在Servlet中因为要告诉jsp文件servlet在哪里所以要在类名的上一行写上@WebServlet("/Servlet"),但是由于我的粗心写成了@WebServlet("Servl......
  • vuejs+antv-g6绘制图表
    该内容包括antv-g6官网地址、antv-g6的基本使用(包括自定义节点、常用插件(右键菜单等)、基本事件、目前我所遇到的一些需求)。1、antv-g6的官网地址:https://g6.antv.antgroup.com/examples2、安装antv-g6组件npminstall@antv/g6 3、创建antvView.vue文件使用antv/g6......
  • JS 下载文件
    一、背景二、实现点击查看代码//下载文件exportfunctiondownloadFile(obj,name,suffix){consturl=window.URL.createObjectURL(newBlob([obj]))constlink=document.createElement('a')link.style.display='none'link.href=urlconstfi......
  • JS 构造树形
    一、背景List组装树形Tree二、实现点击查看代码listRolePurifySmalls().then(data=>{constlist=data||[]constmap={}list.forEach(item=>{letsmalls=map[item.divisionName]if(!smalls){smalls=[]......
  • JS 将列表转成树形结构数据
    一、背景联调发现有些后端返回List但是前后需要转树形结构二、实现点击查看代码import_,{isArray}from'lodash'/***将列表转成树形结构数据*@paramnodes列表数据*@paramoptions可选参数,{idKey,pIdKey,childrenKey}*@returns{[]}树形结构数据......
  • Json学习
    Json入门参考资料笔记教程视频教程JSON定义JSON(JavaScriptObjectNotation,JS对象标记)是一种轻量级的数据交换格式,目前使用特别广泛。采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得JSON成为理想的数据交换语言。易于人阅读和编......