加密,解密 crypto-js、 计算哈希值,js-sha3

加密,解密 crypto-js、 计算哈希值,js-sha3

文章目录

  • 加密,解密 crypto-js、 计算哈希值,js-sha3
    • crypto-js
      • 安装 crypto-js
      • 使用 crypto-js
    • js-sha3
      • 安装 js-sha3
      • 使用 js-sha3

在项目中一些不能明文传输,就需要把明文进行加密,解密来保证数据的安全性,一般来说都是前端和后端协定好一种加密方式,然后前端进行参数加密传到后端,后端再去解密。

场景 1:用户登录密码
场景 2:url 明文传递的参数

crypto-js

CryptoJS 是一个不断增长的标准和安全加密算法集合,使用最佳实践和模式在 JavaScript 中实现。它们速度很快,并且具有一致且简单的界面。

crypto-js 中文文档

安装 crypto-js

npm install crypto-js

使用 crypto-js

函数封装,创建 encrypt.js 文件,内容如下

import CryptoJS from "crypto-js";
//我们使用了 CryptoJS 的 AES 加密算法进行加密和解密操作。需要提供一个密钥(key)来加密和解密数据。请确保保护好密钥,尽量不要将其暴露在前端代码中。
export const security = {// 加密encrypt(word, keyStr) {keyStr = keyStr || "defaultSecuritys"; // 16位,密钥字符串const key = CryptoJS.enc.Utf8.parse(keyStr);const srcs = CryptoJS.enc.Utf8.parse(word);const encrypted = CryptoJS.AES.encrypt(srcs, key, {mode: CryptoJS.mode.ECB, //加密模式padding: CryptoJS.pad.Pkcs7, // 填充方式});return encrypted.toString();},// 解密decrypt(word, keyStr) {keyStr = keyStr || "defaultSecuritys"; // 16位,密钥字符串const key = CryptoJS.enc.Utf8.parse(keyStr);const decrypt = CryptoJS.AES.decrypt(word, key, {mode: CryptoJS.mode.ECB,padding: CryptoJS.pad.Pkcs7,});return CryptoJS.enc.Utf8.stringify(decrypt).toString();},
};

使用示例

import { security } from "./encrypt.js";
//加密
let encrypted = security.encrypt(JSON.stringify({ value: "加密内容" }));
console.log(encrypted); //mVeyNNUXz8B1hMQUPTADfOepFQqfsvEszQmo5ibfpXM=//解密
let decrypted = security.decrypt(encrypted);
console.log(decrypted); //{"value":"加密内容"}

传入的 word 必须是字符串类型,直接对对象加密,解密时会返回 [object Object]

js-sha3

js-sha3 是一个 JavaScript 库,用于计算 SHA-3(安全哈希算法-3)和 Keccak 算法的哈希值。你可以使用它在前端或后端进行哈希计算。你可以选择不同的哈希算法(例如 SHA3-224、SHA3-256、SHA3-384、SHA3-512),具体取决于你的需求。
js-sha3 库主要用于计算哈希值,而不是加密和解密数据。

安装 js-sha3

npm install js-sha3

使用 js-sha3

使用示例

import { sha3_512 } from "js-sha3";function hashData() {const input = document.getElementById("input").value;const sha3Hash = sha3_512(input);document.getElementById("output").innerText = "SHA3-512 哈希值: " + sha3Hash;
}

请记住,哈希函数是单向的,不可逆的,所以不能将哈希值解密为原始数据。

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

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

相关文章

Java List 获取部分组成new list,获取两个list相同/不同的内容

获取List中的一项 List<String> _outingCntry list.stream().map(OSzItem::getGroup). collect(Collectors.toList()); 获取List中的多项 List<vo> list new ArrayList<>(); Map<String, String> map list.stream().collect( Collectors.toMap(v…

Python 操作PDF图片 – 添加、替换、删除PDF中的图片

PDF文件中的图片可以丰富文档内容&#xff0c;提升用户的阅读体验。除了在PDF中添加图片外&#xff0c;有时也需要替换或删除其中的图片&#xff0c;以改进视觉效果或更新信息。文本将提供以下三个示例&#xff0c;介绍如何使用Python 操作PDF文件中的图片&#xff1a; 目录 …

qt学习篇---界面按键关联(信号和槽)

目录 1.qt基础 2.做一个界面 创建project UI界面设计 信号和槽 1.控件改名字 2.什么是信号和槽 3.怎么关联信号和槽 自动关联 手动关联 1.qt基础 qt可移植性强&#xff0c;不久会用到MCU。很有意义学习 2.做一个界面 创建project 不要中文路径 选择QWidget .pro文件…

机器学习之K-medians聚类

K-medians聚类是一种聚类算法,类似于K-means,但是它使用中位数来确定簇的中心,而不是平均值。这种方法在处理数据中存在离群值或异常值时比较有用,因为中位数对离群值不敏感。K-medians的步骤与K-means类似,但在每次迭代中,它使用中位数来更新簇的中心。 K-medians的算法…

基于Lucene的搜索引擎设计与实现:技术总结与展望

论文、答辩资料、源代码见下 引言 在大数据时代背景下&#xff0c;如何快速有效地从海量网络信息中检索出有价值的信息&#xff0c;是当前技术领域面临的一大挑战。本次毕业设计的核心工作是设计并实现一个基于Lucene的搜索引擎&#xff0c;旨在提高信息检索的效率和准确性。…

强力的应用容器引擎---------Docker的资源控制

目录 一、CPU 资源控制 1.1cgroups有四大功能 1.2设置CPU使用率上限 1.2.1查看CPU使用率 1.2.2进行CPU压力测试 1.2.3设置50%的比例分配CPU使用时间上限 1.3设置CPU资源占用比&#xff08;设置多个容器时才有效&#xff09; 1.3.1创建两个容器为hua1 和hua2&#xff0c…

怎么检查ubuntu22.04服务器机器被挖矿了

如果怀疑你的 Ubuntu 22.04 系统被挖矿程序占用&#xff0c;可以通过一系列检查步骤来确认这一疑问。这些步骤可以帮助你发现系统是否存在未授权的挖矿活动&#xff1a; 1. 检查CPU和GPU使用率 挖矿程序通常会导致CPU或GPU的使用率异常升高。使用以下命令检查系统资源的使用情…

秋招后端开发面试题 - Java多线程(下)

目录 Java多线程前言面试题synchronized&#xff1f;作用&#xff1f;synchronized 怎么使用&#xff1f;构造方法可以用 synchronized 修饰吗&#xff1f;synchronized 底层原理了解吗&#xff1f;除了原子性&#xff0c;synchronized 可见性&#xff0c;有序性&#xff0c;可…

限流--4种经典限流算法讲解--单机限流和分布式限流的实现

为什么需要限流 系统的维护使用是需要成本的&#xff0c;用户可能使用科技疯狂刷量&#xff0c;消耗系统资源&#xff0c;出现额外的经济开销问题&#xff1a; 控制成本>限制用户的调用次数用户在短时间内疯狂使用&#xff0c;导致服务器资源被占满&#xff0c;其他用户无…

Q1季度方便速食行业线上市场(京东天猫淘宝)销售数据分析

方便食品行业作为快速消费品市场的重要组成部分&#xff0c;近几年表现出较为强劲的发展势头。当然&#xff0c;每年的食品安全问题也在一定程度上影响着市场的良性健康发展。那么&#xff0c;今年Q1季度方便食品的线上发展如何&#xff1f; 根据鲸参谋数据显示&#xff0c;Q1…

制造企业如何打造客户服务核心竞争力?[AMT企源典型案例]

引言 产品同质化严重&#xff0c;竞争的焦点从产品转向服务&#xff0c;企业的管理模式也要相应转变。那么如何打造围绕服务的核心竞争力&#xff1f;相信以下案例会给大家一些启发。 项目背景&#xff1a; 售后服务在市场竞争中的作用凸显 A公司是一家医疗器械生产制造企业…

【多维动态规划】Leetcode 72. 编辑距离【中等】

编辑距离 给你两个单词 word1 和 word2&#xff0c; 请返回将 word1 转换成 word2 所使用的最少操作数 。 你可以对一个单词进行如下三种操作&#xff1a; 插入一个字符删除一个字符替换一个字符 示例 1&#xff1a; 输入&#xff1a;word1 “horse”, word2 “ros” 输…

kali 网络环境设置

一、修改网卡配置 1.1 系统桌面上单击右键&#xff0c;在弹出的菜单中选择 Open Terminal Here。 1.2 输入命令 vim /etc/network/interfaces&#xff0c;显示配置网卡参数为。iface lo 一般指 本地环回接口&#xff0c; iface eth0 网卡为系统正在使用的网卡&#xff0c;其中的…

将后端返回的正则字符串转为正则对象

/*这个正则表示的是输入框前后不得有空格*/ let re v.regex.replace("\n", ""); // 将后端返回的正则字符串转为正则对象 let reg new Function("return " re)(); if (reg.test(v.value) true) { /*所需要写的事件*/ } else { /*空格的时候的…

elementUi中el-date-picker;两个日期选择器第二个必须在第一个之后

<el-row><el-col :span"12"><el-form-item label"实际开始日期" style"margin-top: 10px;" proprealBeginDate><el-date-picker v-model"pmTaskProgressFeedback.realBeginDate" type"date" placehold…

浏览器的本地存储---localstorage

web存储对象 Web 存储对象 localStorage 和 sessionStorage 允许我们在浏览器上保存键/值对。 这两个对象保存再本地&#xff08;客户端&#xff09;&#xff0c;允许保存至少 5MB 的数据&#xff08;或更多&#xff09;&#xff0c;这些数据不会因为页面刷新而销毁&#xff0…

高扬程水泵的性能与应用领域 /恒峰智慧科技

在现代社会中&#xff0c;科技的发展为我们的生活带来了无数便利和可能性。其中&#xff0c;高扬程水泵作为一种高效能的水泵&#xff0c;其独特的设计使其在各个领域都有着广泛的应用&#xff0c;尤其是在森林消防中。 一、高扬程水泵的性能 1. 高扬程&#xff1a;高扬程水泵…

前端深度的技术有哪些?

前端技术的深度涵盖了一系列专业知识、技术栈和实践方法&#xff0c;这些内容可以帮助开发者构建高性能、可维护、用户体验优秀的Web应用程序。以下是前端深度技术的一些关键领域&#xff1a; 1. 现代Web框架与库 React、Vue.js、Angular等主流框架的深入理解和实战经验&#…

TinyML之Hello world----基于Arduino Nano 33 BLE Sense Rev2的呼吸灯

早期版本的Hello World 这应该是一个逼格比较高的呼吸灯了&#xff0c;用ML来实现呼吸灯功能&#xff0c;之前已经有大佬发过类似的文章&#xff1a;https://blog.csdn.net/weixin_45116099/article/details/126310816 当前版本的Hello World 这是一个ML的入门例程&#xff…