首页 > 其他分享 >那些大家都知道的js加密技术

那些大家都知道的js加密技术

时间:2023-09-07 23:33:55浏览次数:44  
标签:大家 加密 解密 js 密钥 const CryptoJS 加密技术 crypto

引言: 随着现代网络应用的迅速发展,数据安全成为了一项至关重要的任务。JavaScript作为前端开发的主要语言之一,在保护用户数据和隐私方面扮演了重要的角色。本文将介绍JavaScript中常用的加密和解密技术栈,探讨它们的优缺点,并提供代码案例来帮助您更好地理解这些技术。

一些常用的基础的js加密可以通过在线一键解密的工具来解密。

一、加密技术栈

  1. 对称加密: 对称加密使用相同的密钥来加密和解密数据。这种方法的优点是速度快,但缺点是密钥管理可能会变得复杂。以下是一个简单的JavaScript对称加密代码示例,使用CryptoJS库:
// 导入CryptoJS库
const CryptoJS = require("crypto-js");

// 定义密钥
const key = "mySecretKey";

// 加密
const plaintext = "Hello, World!";
const ciphertext = CryptoJS.AES.encrypt(plaintext, key).toString();

// 解密
const bytes = CryptoJS.AES.decrypt(ciphertext, key);
const decryptedText = bytes.toString(CryptoJS.enc.Utf8);

console.log(decryptedText); // 输出:Hello, World!
  1. 非对称加密: 非对称加密使用一对密钥,公钥用于加密,私钥用于解密。这种方法的优点是安全性高,但速度较慢。以下是一个使用Node.js内置模块的非对称加密示例:
const crypto = require("crypto");

// 生成密钥对
const { publicKey, privateKey } = crypto.generateKeyPairSync("rsa", {
  modulusLength: 2048,
  publicKeyEncoding: {
    type: "spki",
    format: "pem",
  },
  privateKeyEncoding: {
    type: "pkcs8",
    format: "pem",
  },
});

// 加密
const plaintext = "Hello, World!";
const encryptedData = crypto.publicEncrypt(publicKey, Buffer.from(plaintext));
const ciphertext = encryptedData.toString("base64");

// 解密
const decryptedData = crypto.privateDecrypt(privateKey, encryptedData);
const decryptedText = decryptedData.toString("utf8");

console.log(decryptedText); // 输出:Hello, World!
  1. Hash函数: Hash函数将输入数据映射为固定长度的哈希值。它通常用于验证数据完整性和密码存储。以下是一个使用Node.js内置模块的哈希函数示例:
const crypto = require("crypto");

// 创建一个Hash对象
const hash = crypto.createHash("sha256");

// 更新Hash对象的输入
hash.update("Hello, World!");

// 计算哈希值
const hashValue = hash.digest("hex");

console.log(hashValue); // 输出:d95225eb83e92e72b9d26e2346372aa61efc4b36f725eb63c92d5d936f9811a0

二、解密技术栈

解密通常与加密技术栈对应,使用相同的算法和密钥来还原原始数据。因此,在解密方面并没有单独的技术栈。

优缺点:

  • 对称加密的优点是速度快,但缺点是密钥管理复杂,不适用于分布式系统。
  • 非对称加密的优点是安全性高,但速度较慢,适用于安全通信和数字签名。
  • Hash函数适用于数据完整性验证和密码存储。

总结: JavaScript加密和解密技术栈在现代网络应用中起着关键作用,用于保护用户数据和隐私。选择合适的加密方法取决于应用的需求,理解这些技术的优缺点将有助于做出明智的决策。在实际应用中,请务必谨慎处理敏感信息,并妥善管理密钥。

那些大家都知道的js加密技术_对称加密

标签:大家,加密,解密,js,密钥,const,CryptoJS,加密技术,crypto
From: https://blog.51cto.com/u_15785573/7402814

相关文章

  • VueJS 处理表单组件上 api 调用的错误
    问题出在可组合项中对errors的处理上。在register函数中,你将errors重新赋值为空对象{},而应该将其赋值给errors.value来保持响应式。修改useAuth可组合项的代码如下:exportdefaultfunctionuseAuth(){leterrors=ref({});constregister=(request)=>{errors.val......
  • 【JS】实现 MaxQueue
    classMaxQueue{constructor(){this.queue=[]this.max=[]}enqueue(el){this.queue.push(el)while(this.max.length&&this.max[this.max.length-1]<el){this.max.pop()}......
  • CommonJS 和 ECMAScript 转换
    CommonJS和ECMAScript前言:在完成一个加密工具的过程中,本来只想使用commonjs语法完成该功能,但是在使用chalk的时候发现chalk是通过ES模块导出的,无法使用require引入(当然也有一些方法,可以使用bable去转化,但是本人想实现使用es语法,目前还没写多少内容,以下是转化......
  • 初学者学习Auto.js的示例和教程资源
    1.Auto.js官方文档:您可以前往Auto.js官方网站(https://hyb1996.github.io/AutoJs-Docs/#/)查看官方文档,其中包含了基本使用方法、API参考和示例代码等。2.Auto.js示例脚本:Auto.js官方文档中提供了一些示例脚本,您可以下载并运行这些脚本,以了解其基本用法和功能。3.Auto.js论坛:Auto.......
  • 2-Vue.js环境准备-使用vue-cli快速搭建项目(cli2)
    一、概述在用Vue.js构建大型应用时,推荐使用npm安装,npm能很好的和webpack等打包工具配合使用。如果使用npm过程中安装速度过慢,可以考虑使用淘宝镜像的cnpm来代替npm。首先Vue的安装依赖于Node.js,要保证你的计算机上已经安装过Node.js。可以参考前面的文章:https://blog.csdn.net/G......
  • 流程全局引入外部JS、CSS
    全局引入,所有流程   E9如果在代码块里面这样:<script type="text/javascript" src="/js/layui-v2.8.13/layui/layui.js"></script>是引入不了的。  如果想单独在某个流程引入,如下: ......
  • 无法找到模块“element-plus/dist/locale/zh-cn.mjs”的声明文件
    VUE报错如下无法找到模块“element-plus/dist/locale/zh-cn.mjs”的声明文件。“e:/visualstudio_code/emppre/node_modules/element-plus/dist/locale/zh-cn.mjs”隐式拥有“any”类型。如果“element-plus”包实际公开了此模块,请尝试添加包含declaremodule‘element-plus/di......
  • 前端数据可视化:利用D3.js创建动态图表
    前言数据可视化是将数据以图表、图形等形式展示出来,以便更直观地理解和分析数据。D3.js(Data-DrivenDocuments)是一个强大的JavaScript库,用于创建交互式和动态的数据可视化。本文将介绍如何使用D3.js创建动态图表,并通过一个具体的示例来说明。示例:柱状图我们以柱状图为例,展示一......
  • 用友U8 OA test.jsp SQL注入漏洞
    漏洞描述用友U8OAtest.jsp文件存在SQL注入漏洞,由于与致远OA使用相同的文件,于是存在了同样的漏洞漏洞影响用友U8OA漏洞复现fofa语法:title="用友U8-OA"登录页面如下:POC/yyoa/common/js/menu/test.jsp?doType=101&S1=(SELECT%20md5(1))出现上图说明目标存在sql注入......
  • sql与js中单引号问题
    1、展现树在构建xml字符串时/***解决当输入值中含有单引号或双引号导致树的展现报js脚本错误*@paramvalue*@return*/privatestaticStringgetFormatString(Stringvalue){returnvalue.replaceAll("/'","'").replaceAll("/"",""&qu......