前端加密的几种方式

news2025/4/16 6:20:50

前端加密的几种方式

  • 一、对称加密
    • 原理
    • ‌常用算法
    • 代码示例(AES)
    • 适用场景‌
  • 二、非对称加密
    • 原理‌
    • 常用算法‌
    • 代码示例(RSA)
    • ‌适用场景‌
  • 三、哈希函数
    • ‌原理‌
    • 常用算法‌
    • ‌代码示例(SHA-256)
    • 适用场景‌
  • 四、Base64 编码
    • 原理‌
    • 特点
    • ‌代码示例‌
  • 五、Web Crypto API
    • 原理‌
    • 代码示例(AES GCM)‌
    • 优势‌
  • ‌选择建议

一、对称加密

原理

加密与解密使用同一密钥,速度快但需安全传输密钥。

‌常用算法

  • AES‌(主流选择,支持128/192/256位密钥。推荐GCM模式,即消息认证的‌认证加密算法)

代码示例(AES)

// 使用 crypto-js 库
import CryptoJS from'crypto-js';

const encrypted = CryptoJS.AES.encrypt('敏感数据', '密钥').toString();
const decrypted = CryptoJS.AES.decrypt(encrypted, '密钥').toString(CryptoJS.enc.Utf8);

适用场景‌

  • 本地存储加密(如 LocalStorage、Cookie)‌
  • 实时数据传输(需配合安全信道传输密钥)‌

二、非对称加密

原理‌

公钥加密、私钥解密,安全性高但速度较慢。

常用算法‌

  • RSA‌(广泛用于密钥交换和数字签名)‌
  • ECC(椭圆曲线加密,资源消耗更低)‌

代码示例(RSA)

// 公钥加密
const encryptor = new JSEncrypt();
encryptor.setPublicKey(publicKey);
const encrypted = encryptor.encrypt('数据');

// 私钥解密(通常由后端处理)
const decryptor = new JSEncrypt();
decryptor.setPrivateKey(privateKey);
const decrypted = decryptor.decrypt(encrypted);

‌适用场景‌

  • 密钥分发(如 HTTPS 握手阶段)‌
  • 数字签名验证‌

三、哈希函数

‌原理‌

单向不可逆映射,生成固定长度摘要,用于验证数据完整性。

常用算法‌

  • ‌SHA-256‌(主流选择,抗碰撞性强)‌

‌代码示例(SHA-256)

// 使用 crypto-js 库
const hash = CryptoJS.SHA256('原始数据').toString();

适用场景‌

  • 密码存储(需加盐处理,即随机生成字符串)‌
  • 文件完整性校验‌

四、Base64 编码

原理‌

二进制转ASCII字符,非加密但常用于数据编码传输。

特点

可逆,需配合其他加密手段增强安全性‌。

‌代码示例‌

const encoded = btoa('原始字符串'); // 编码
const decoded = atob(encoded);     // 解码

‌适用场景‌:

  • 图片/文件二进制数据传输‌
  • 简单数据混淆(需结合其他加密)‌

编码≠加密‌:Base64需配合其他加密技术使用‌

五、Web Crypto API

原理‌

浏览器原生API,支持AES、RSA等算法,安全性更高‌。

代码示例(AES GCM)‌

// 生成密钥
const key = await crypto.subtle.generateKey({ name: "AES-GCM", length: 256 }, true, ["encrypt", "decrypt"]);

// 加密
const iv = crypto.getRandomValues(new Uint8Array(12));
const encrypted = await crypto.subtle.encrypt({ name: "AES-GCM", iv }, key, data);

优势‌

  • 硬件加速性能优化‌
  • 支持更复杂的加密模式(如GCM)‌

‌选择建议

需求推荐方案安全性性能
本地存储加密AES-256 + 哈希加盐
密钥交换RSA-2048/ECC极高
密码传输SHA-256 + HTTPS
实时数据流加密AES-GCM + Web Crypto API

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

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

相关文章

贪心算法:部分背包问题深度解析

简介: 该Java代码基于贪心算法实现了分数背包问题的求解,核心通过单位价值降序排序和分阶段装入策略实现最优解。首先对Product数组执行双重循环冒泡排序,按wm(价值/重量比)从高到低重新排列物品;随后分两阶段装入:循环…

连接器电镀层的作用与性能

连接器电镀层的作用与性能: 镀金 金具有很高的化学稳定性,只溶于王水,不溶于其它酸,金镀层耐蚀性强,导电性好,易于焊接,耐高温,硬金具有一定的耐磨性。 对钢、铜、银及其合金基体而…

神经网络如何表示数据

神经网络是如何工作的?这是一个让新手和专家都感到困惑的问题。麻省理工学院计算机科学和人工智能实验室(CSAIL)的一个团队表示,理解这些表示,以及它们如何为神经网络从数据中学习的方式提供信息,对于提高深…

nginx自编译重现gzip和chunked的现象

前言 最近做项目,发现一个比较好玩的事,nginx的module gzip模式默认支持1KB压缩,和chunked返回,本来现在的很多框架都很完善了,但是,一些新语言框架或者一些老旧框架会不能完整支持chunked,导致…

jspm企业采购管理系统的设计与实现(源码+lw+部署文档+讲解),源码可白嫖!

摘要 相比于以前的传统企业采购手工管理方式,智能化的管理方式可以大幅降低企业采购管理的运营人员成本,实现了企业采购管理的标准化、制度化、程序化的管理,有效地防止了物资信息、物资入库、出库等的随意管理,提高了信息的处理…

现代测试自动化框架教程:Behave接口测试与Airtest移动端UI自动化

前言 我发现每天还是陆陆续续有人在看我之前写的自动化框架搭建的文档;即使很早就有新的框架,更好的选择出来了;所以特别写了这一篇目前大厂也在使用的;日活400w有实际落地的自动化测试架构方案; 随着测试技术…

优化运营、降低成本、提高服务质量的智慧物流开源了

智慧物流视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒,省去繁琐重复的适配流程,实现芯片、算法、应用的全流程组合,从而大大减少企业级应用约95%的开发成本可通过边缘计算技术…

使用Lombok的@Slf4j和idea构建:找不到log符号-解决

问题:在使用Lombok的Slf4j构建项目时提示如下内容: MvcConfiguration.java:26:9 java: cannot find symbol symbol: variable log location: class cn.edu.wynu.mrcinerec.mrserver.config.WebMvcConfiguration查了网上的方法都是改配置 但是使用Googl…

【Python爬虫】简单案例介绍1

目录 三、Python爬虫的简单案例 3.1 网页分析 单页 三、Python爬虫的简单案例 本节以科普中国网站为例。 3.1 网页分析 单页 在运用 Python 进行爬虫开发时,一套严谨且有序的流程是确保数据获取高效、准确的关键。首先,深入分析单个页面的页面结构…

LLM-as-Judge真的更偏好AI输出?

论文标题 Do LLM Evaluators Prefer Themselves for a Reason? 论文地址 https://arxiv.org/pdf/2504.03846 代码地址 https://github.com/wlchen0206/llm-sp 作者背景 弗吉尼亚大学,乔治华盛顿大学 实践建议 在将LLM部署为评估器之前,应严格评…

【软考-架构】13.3、架构复用-DSSA-ABSD

✨资料&文章更新✨ GitHub地址:https://github.com/tyronczt/system_architect 文章目录 1、软件架构复用2、特定领域软件架构DSSADSSA的三个基本活动参与DSSA的四种角色人员建立DSSA的过程三层次模型 考试真题第一题第二题 3、基于架构的软件开发ABSD的软件开发…

色温插值计算借鉴

色温插值计算方法借鉴: 摘至:Understanding the in-camera rendering pipeline & the role of AI and deep learning

SnailJob:分布式环境设计的任务调度与重试平台!

背景 近日挖掘到一款名为“SnailJob”的分布式重试开源项目,它旨在解决微服务架构中常见的重试问题。在微服务大行其道的今天,我们经常需要对某个数据请求进行多次尝试。然而,当遇到网络不稳定、外部服务更新或下游服务负载过高等情况时,请求…

网络安全-Http\Https协议和Bp抓包

1. http协议,有请求必有相应, 请求协议, 响应协议; 2. 密码学加密机制及常用算法和常用名称说明: 算法 密钥 明文数据 密文; 加密算法分类和常用算法: 加密算法可以归结为三大类&#xff…

爱普生FC1610AN5G手机中替代传统晶振的理想之选

在 5G 技术引领的通信新时代,手机性能面临前所未有的挑战与机遇。从高速数据传输到多任务高效处理,从长时间续航到紧凑轻薄设计,每一项提升都离不开内部精密组件的协同优化。晶振,作为为手机各系统提供稳定时钟信号的关键元件&…

质粒已被全面解析

随着微生物研究的不断深入和耐药性问题的日益加剧,了解质粒对开发抗菌策略及生物技术应用意义重大。但现有质粒数据库缺乏细致注释并且工具存在不足。近期,香港城市大学李帅成课题组在Nucleic Acids Research期刊发表研究成果,推出全面注释质…

实验二.单按键控制LED

1.实验任务 如图4.1所示:在P0.0端口上接一个发光二极管L1,按键按一下灯亮,在按一下灯灭。 2.电路原理图 3.系统板上硬件连线 把“单片机系统”区域中的P0端口用导线连接到“八路发光二极管指示模块”区域中的L1端口上。 4.程序设计内容

【ROS】move_base 导航节点概述

【ROS】move_base 导航节点概述 前言move_base 架构move_base 内部模块move_base 外部数据 前言 本章介绍 ROS 导航系统中的核心节点 move_base,它负责路径规划和导航控制,是系统的调度中心。我们将简要讲解其内部模块结构,以及运行所需的外…

【FPGA基础学习】DDS信号发生器设计

一、IP核简介 IP核的定义与核心作用 定义 IP核是芯片设计中独立功能的成熟模块,例如处理器、存储器、接口协议等。它们以硬件描述语言(HDL)、网表或物理版图形式交付,供其他设计者直接调用,避免重复开发 核心作用 缩…

linux ceres库编译注意事项及测试demo

最近linux编译了ceres库,因为要涉及到一个程序源代码的编译,但是反复测试,一直各种错误,所以一个个问题排除; 虽然前面ceres库编译成功了,但是版本自定义扔进去的,所以在进行代码编译的时候各种报错。 参考…