JavaScript加密算法_常见加密方法


JavaScript中常见加密方法包括Base64编码、MD5、SHA系列哈希、AES对称加密、RSA非对称加密及Web Crypto API;其中Base64用于数据转换但不安全,MD5和SHA用于哈希摘要,AES适合前后端协同加密,RSA用于公钥加密与签名,Web Crypto API为现代浏览器推荐方案,提供更安全的原生加密支持。

JavaScript中常见的加密方法主要用于数据安全传输、用户认证和信息保护。虽然JavaScript运行在客户端,存在代码暴露的风险,但仍有许多实用的加密方式可用于前端处理或与后端协同工作。以下是几种常见的加密算法及其实现方式。

1. Base64 编码(非加密,但常用于数据转换)

Base64 不是真正的加密算法,而是一种编码方式,用于将二进制数据转换为文本格式,常用于传输图片或JSON数据中的字段加密前处理。

JavaScript原生支持:

const str = "Hello, world!";

const encoded = btoa(str); // 编码

const decoded = atob(encoded); // 解码

console.log(encoded); // SGVsbG8sIHdvcmxkIQ==

注意:Base64可轻松被解码,不能用于敏感信息保护。

2. MD5 哈希算法

MD5 是一种广泛使用的哈希函数,生成128位(通常表示为32位十六进制字符串)的摘要。虽然已被证明不安全(存在碰撞),但仍用于校验数据完整性。

使用第三方库如 crypto-js

import md5 from 'crypto-js/md5';

const hash = md5("message");

console.log(hash.toString()); // 78e731027d8fd50ed642340b7c9a63b3

适用场景:密码简单哈希(需加盐)、文件指纹等,但不应单独用于密码存储。

3. SHA 系列哈希算法

SHA-1、SHA-256、SHA-512 比MD5更安全,尤其是SHA-256,属于SHA-2系列,广泛用于数字签名和区块链等领域。

使用 crypto-js 示例:

import sha256 from 'crypto-js/sha256';

const hash = sha256("hello");

console.log(hash.toString());

浏览器原生也支持部分SHA算法通过 Web Crypto API:

async function sha256Message(message) {

  const msgUint8 = new TextEncoder().encode(message);

  const hashBuffer = await crypto.subtle.digest('SHA-256', msgUint8);

  const hashArray = Array.from(new Uint8Array(hashBuffer));

  return hashArray.map(b => b.toString(16).padStart(2, '0')).join('');

}

sha256Message("hello").then(console.log);

4. AES 对称加密

AES(高级加密标准)是一种对称加密算法,加密和解密使用相同密钥,适合本地数据加密或前后端协商密钥后的通信加密。

使用 crypto-js 实现AES加解密:

import AES from 'crypto-js/aes';

const encrypted = AES.encrypt('My secret message', 'my-key'); // 密钥为字符串

const decrypted = AES.decrypt(encrypted, 'my-key');

console.log(decrypted.toString(CryptoJS.enc.Utf8)); // 输出原文

注意:密钥管理是关键,避免硬编码在前端代码中。

5. RSA 非对称加密

RSA 使用公钥加密、私钥解密,适合安全传输密钥或数字签名。由于性能较低,一般不在前端直接处理大量数据加密。

使用 jsrsasignencrypt.js 库:

import { JSEncrypt } from 'jsencrypt';

const encryptor = new JSEncrypt();

encryptor.setPublicKey(`-----BEGIN PUBLIC KEY-----...`);

const encrypted = encryptor.encrypt("secret data");

私钥必须由后端保存,前端只使用公钥加密,防止泄露。

6. Web Crypto API(现代浏览器原生支持)

现代浏览器提供 Web Crypto API,支持SHA、AES、RSA等算法,安全性更高,推荐用于新项目。

特点:

  • 加密操作在安全上下文中执行
  • 支持密钥生成、导出控制
  • 可用于加密、解密、签名、哈希等

示例:使用SubtleCrypto生成AES密钥

crypto.subtle.generateKey(

  { name: "AES-GCM", length: 256 },

  true,

  ["encrypt", "decrypt"]

)

基本上就这些常见方法。选择哪种方式取决于具体需求:是否需要可逆、性能要求、是否涉及网络传输等。前端加密只是整体安全的一环,关键逻辑和密钥管理仍需依赖后端配合。


# javascript  # java  # js  # 前端  # json  # 编码  # 浏览器  # 区块链  # 后端  # ai  # 数据加密  # 安全传输 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 网络优化76771 】 【 技术知识130152 】 【 IDC云计算60162 】 【 营销推广131313 】 【 AI优化88182 】 【 百度推广37138 】 【 网站推荐60173 】 【 精选阅读31334


相关推荐: php本地部署后数据库连接报错_1045accessdenied错误解决方法详解【汇总】  Win11怎么制作U盘启动盘_Win11原版系统安装盘制作【详解】  Windows 10怎么录屏_Windows 10使用Xbox Game Bar录制屏幕视频教程  c++中的CRTP是什么 c++奇异递归模板模式【进阶】  Win11怎么设置DNS服务器_Windows11修改网络适配器DNS优选  Go 中的 := 运算符:类型推导机制与使用边界详解  Python高性能计算项目教程_NumPyCythonGPU并行加速  如何在Golang中实现WebSocket广播_使用Channel和协程分发消息  Win11怎么关闭专注助手 Win11关闭免打扰模式设置【操作】  如何使用 Python 合并文件夹内多个 Excel 文件并避免权限错误  Python面向对象实战讲解_类与设计模式深入理解  如何快速验证Golang安装是否成功_运行go version和hello world示例  如何在Golang中实现CI/CD流水线自动化测试_Golang持续集成测试执行方法  如何高效识别并拦截拼接式恶意域名 spam  Mac怎么设置鼠标滚动速度_Mac鼠标设置详细参数  如何在Golang中使用内置函数_Golanglen append make等使用技巧  Win11怎么更改默认打开方式_Win11关联文件格式教程【详解】  如何使用Golang实现负载均衡_分发请求到多个服务节点  mac怎么安装字体_MAC添加第三方字体与字体册管理【教程】  Win11怎么更改鼠标指针方案_Windows11自定义鼠标光标样式与大小  Go 中 defer 在 goroutine 内部不生效的原因与执行时机详解  Windows 10自带杀毒软件在哪_Windows 10打开和使用Windows安全中心  Windows10怎样设置家长控制_Windows10家长控制设置方法【指南】  windows 10应用商店区域怎么改_windows 10微软商店切换地区方法  Linux怎么实现内网穿透_Linux安装Frp客户端与服务端配置【方法】  如何在网页无标准表格标签时高效提取结构化数据  Win11怎么设置屏保时间_调整Win11屏幕保护等待时间【详解】  Win11怎么开启游戏模式_Win11优化游戏帧数性能【教程】  Linux怎么修改用户密码_Linux系统passwd命令使用与权限管理【方法】  如何使用Golang实现微服务事件驱动_使用消息总线解耦服务  如何在 Go 中正确初始化结构体中的 map 字段  Win11怎么关闭系统提示音_Windows11声音方案设为无声教程  Python类装饰器使用_元编程解析【教程】  如何将竖排文本文件转换为横排字符串  windows系统如何安装cab更新补丁_windows手动安装更新包教程  php485在macos下怎么配置_php485 macOS系统配置指南【解答】  如何关闭Win10自动更新更新_Win10系统自动更新双重关闭技巧  Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置  How to Properly Use NumPy in VS Code  php能控制zigbee模块吗_php通过串口与cc2530 zigbee通信【介绍】  如何使用Golang理解结构体指针方法接收者_Golang修改字段实践  c++怎么处理多线程死锁_c++ lock_guard与unique_lock锁管理【技巧】  Win11怎么关闭粘滞键_彻底禁用Windows 11连按Shift粘滞键【步骤】  Windows怎样关闭桌面弹窗广告_Windows关闭桌面弹窗设置【教程】  LINUX怎么查看进程_LINUX ps命令查看运行服务  Win11玩游戏全屏闪退怎么办_Win11全屏优化禁用设置【教程】  Win11屏幕亮度突然变暗怎么解决_自动变暗问题处理  微信JSAPI支付回调PHP怎么接收_处理JSAPI异步通知数据方法【指南】  PHP 中如何在函数内持久化修改引用变量的指向  Win11如何开启系统更新 Win11开启系统更新方法【步骤】 

 2025-11-28

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

致胜网络推广营销网


致胜网络推广营销网

致胜网络推广营销网专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。

 915688610

 17370845950

 915688610@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.