前端面试题5(前端常见的加密方式)

在这里插入图片描述

前端常见的加密方式

在前端进行数据加密主要是为了保护用户的隐私和提升数据传输的安全性。前端数据加密可以采用多种方法,以下是一些常见的加密技术和方法:

1. HTTPS

虽然不是直接的前端加密技术,但HTTPS是保障前端与后端数据传输安全的基础。HTTPS通过SSL/TLS协议对通信内容进行加密,可以有效防止数据在传输过程中被窃取或篡改。

2. JavaScript 加密库

有许多JavaScript库可以帮助你在前端实现数据加密,以下是一些常用的库:

  • CryptoJS:一个流行的JavaScript加密库,支持AES、DES、RSA、SHA等众多加密算法。

    // CryptoJS 示例 - AES 加密
    var CryptoJS = require("crypto-js");
    var message = "Hello, this is a secret message";
    var secretKey = "my-secret-key-123";var encrypted = CryptoJS.AES.encrypt(message, secretKey);
    var decrypted = CryptoJS.AES.decrypt(encrypted.toString(), secretKey);console.log("Encrypted:", encrypted.toString());
    console.log("Decrypted:", decrypted.toString(CryptoJS.enc.Utf8));
    
  • jsencrypt:一个轻量级的RSA公钥/私钥加密库。

    // jsencrypt 示例
    var JSEncrypt = require('jsencrypt').JSEncrypt;var encryptor = new JSEncrypt();
    encryptor.setPublicKey(`-----BEGIN PUBLIC KEY-----
    MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzU2j...
    -----END PUBLIC KEY-----`);var plaintext = "Hello, this is a secret message";
    var ciphertext = encryptor.encrypt(plaintext);
    console.log("Encrypted Text:", ciphertext);
    

3. Web Cryptography API

Web Cryptography API是HTML5的一部分,提供了原生的加密功能,支持各种加密操作,如生成密钥、加密解密数据等。

// Web Cryptography API 示例 - 生成AES密钥并加密数据
async function encryptMessage(message) {const subtle = window.crypto.subtle;const key = await subtle.generateKey({name: "AES-GCM", length: 256},true,["encrypt", "decrypt"]);const iv = window.crypto.getRandomValues(new Uint8Array(12));const ciphertextBuffer = await subtle.encrypt({name: "AES-GCM", iv},key,new TextEncoder().encode(message));return {ciphertext: new Uint8Array(ciphertextBuffer), iv};
}// 使用示例
encryptMessage("Secret Message").then(({ciphertext, iv}) => {console.log("Ciphertext:", ciphertext);console.log("IV:", iv);
});

注意事项

  • 前端加密不能完全保证数据安全,因为JavaScript代码和加密密钥对用户来说是可访问的。真正的安全应该在服务器端也实施加密和验证。
  • 选择合适的加密算法和密钥管理策略对于确保数据安全至关重要。
  • 考虑到性能和兼容性,使用Web Cryptography API是更现代且推荐的做法,尤其是在支持的浏览器环境中。

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

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

相关文章

关于MCU-Cortex M7的存储结构(flash与SRAM)

MCU并没有DDR,所以他把代码存储在flash上,临时变量和栈运行在SRAM上。之所以这么做是因为MCU的cpu频率很低,都是几十MHZ到一二百MHZ,flash的读取速度能够满足cpu 的取指需求,但flash 的写入速度很慢,所以引…

刚办理的手机号被停用,你可能遇到这些问题了!

很多朋友都会遇到手机号被停用的情况,那么你知道你的手机号为什么会被停用吗?接下来,关于手机号被停用的问题,跟着小编一块来了解一下吧。 ​停机的两种形态: 1、第一个是局方停机,即语音、短信和流量都不…

xmind2testcase工具将测试用例从Xmind转为CSV导入禅道

使用xmind编写测试用例,使用xmind2testcase工具将测试用例从Xmind转为CSV导入禅道,便于管理。 1.工具准备 第一步:安装python 第二步:安装xmind2testcase工具 运行-cmd-打开命令提示符弹窗,输入安装命令 安装命令&…

意图数据集HWU、Banking预处理

当谈到意图数据集时,HWU、Banking和Clinc是三个常见的数据集。以下是关于这三个数据集的介绍: 目录 一、数据集介绍 HWU数据集 Banking数据集 Clinc数据集 二、数据集预处理 数据处理 数据存储 数据类别分析 句子长度统计 一、数据集介绍 HW…

嵌入式硬件电路常用设计软件

目录 1. Cadence Allegro 2. PADS 3. Altium Designer 4. Multisim 5. Protues 1. Cadence Allegro 功能: Cadence Allegro是Cadence公司推出的先进PCB(Printed Circuit Board,印刷电路板)设计布线工具,也是目前…

华为HCIP Datacom H12-821 卷26

1.单选题 在VRRP中,同一备份组的设备在进行VRRP报文认证时,以下哪一参数不会影响Master设备和Backup设备认证协商结果 A、认证字 B、优先级 C、认证方式 D、VRRP版本 正确答案: B 解析: 优先级只会影响谁是主谁是备&…

AI产品经理能力模型的重点素质:人文素养和灵魂境界

在AI产品经理的能力模型中,我最想提的差异化关键点,就是“人文素养和灵魂境界”。 1 为什么“人文素养和灵魂境界”非常重要? 一、“人文素养和灵魂境界”如何影响AI产品设计? 例1:面对一个具体的AI场景&#xff0…

25考研,数二全程跟的张宇老师请问660(做了一半)880和张宇1000题应该怎么选择?

跟张宇老师,也可以做其他的题集,不一定非要做1000题 我当初考研复习的时候,也听了张宇老师的课程,但是我并没有做1000题 因为1000题对于我来说太难了。做了一章之后,就换成其他的题目了。 对于大家来说,…

【机器学习实战】Baseline精读笔记

比赛用到的库 numpy:提供(多维)数组操作 pandas:提供数据结构、数据分析 catboost:用于机器学习的库,特别是分类和回归任务 sklearn.model_selection:包含模型选择的多种方法,如交…

Android 监听网络状态变化(无切换中间态版)

需求: 获取当前的网络状态与类型(WIFI、数据流量)监听网络状态真正变化监听网络类型发生变化 业务场景: 用户打开 App 时、使用过程中,出现无网络时,显示 Toast 提示。但当 wifi、数据流量 互相切换的过…

ppt接单渠道大公开‼️

PPT 接单主要分两种:PPT 模板投稿和PPT 定制接单,我们先从简单的 PPT 模板投稿说起。 PPT 模板投稿 利用业余时间,做一些 PPT 模板上传到平台,只要有人下载你的模板,你就有收入。如果模板质量高,简直就是一…

【设计模式】观察者模式(定义 | 特点 | Demo入门讲解)

文章目录 定义结构Demo | 代码Subject目标类Observer抽象观察者观察者1 | CPU监听器观察者2 | 内存监听器客户端 | Client 优点适合场景 定义 所谓观察者模式就是你是被观察的那个对象,你爸爸妈妈就是观察者,一天24h盯着你,一旦你不听话&…

【BUUCTF-PWN】7-[第五空间2019 决赛]PWN5

参考:BUU pwn [第五空间2019 决赛]PWN5 //格式化字符串漏洞 - Nemuzuki - 博客园 (cnblogs.com) 格式化字符串漏洞原理详解_printf 任意内存读取-CSDN博客 32位小端排序,有栈溢出保护 运行效果: 查看main函数 存在格式化字符串漏洞 输…

SQL二次注入原理分析

二次注入在测试的时候比较少见,或者说很难被测出来,因为测的时候首先要去找注入的位置,其次是去判断第一次执行的SQL语句,然后还要去判断第二次进行调用的 SQL 语句。而关键问题就出在第二次的调用上面。 下面以一个常用过滤方法…

macos下搭建minikube dashboard的启动

背景 最近在复习一下k8s环境相关的知识,需要在自己电脑上搭建一个minikube的环境供自己使用。但是因为docker的镜像仓库最近被墙了,因此在执行minikube dashboard的时候,拉不到相应的镜像,就导致页面看不到相应的一些信息因此本文…

【PYG】dataloader和densedataloader

DenseDataLoader 是专门用于处理稠密图数据的,而 DataLoader 通常用于处理稀疏图数据。两者的主要区别在于它们的输入数据格式和处理方式。DenseDataLoader 适合处理固定大小的邻接矩阵和节点特征矩阵的数据,而 DataLoader 更加灵活,可以处理…

flask中解决图片不显示的问题(很细微的点)

我在编写flask项目的时候,在编写html的时候,发现不管我的图片路径如何变化,其就是显示不出来。如下图我框中的地方。 我尝试过使用浏览器打开,是可以的。 一旦运行这个flask项目,就无法显示了。 我查阅资料后。发现…

简易版async/await

参考:https://juejin.cn/post/7007031572238958629?searchId20240704101813568E9B5B1013C881A239#heading-15 总结一下async/await的知识点 1、 await只能在async函数中使用,不然会报错 2、 async函数返回的是一个Promise对象,有无值看有…

泛微开发修炼之旅--29用计划任务定时发送邮件提醒

文章链接:29用计划任务定时发送邮件提醒

[单master节点k8s部署]17.监控系统构建(二)Prometheus安装

prometheus server安装 创建sa账号,对prometheus server进行授权。因为Prometheus是安装在pod里面,以pod的形式去运行的,因此需要创建sa,并对他做rbac授权。 apiVersion: v1 kind: ServiceAccount metadata:name: monitornamesp…