当前位置:首页 » 《我的小黑屋》 » 正文

前端加解密:Web Crypto API 、crypto-js 库: MD5

10 人参与  2024年03月23日 16:45  分类 : 《我的小黑屋》  评论

点击全文阅读


文章目录

[废弃,不再维护]什么是crypto-js安装依赖MD5 原生 Web Crypto APImd5sha256

[废弃,不再维护]什么是crypto-js

github地址: https://github.com/brix/crypto-js
cryptojs文档: https://cryptojs.gitbook.io/docs/#encoders

CryptoJS (crypto.js) 为 JavaScript 提供了各种各样的加密算法。

CryptoJS是一个JavaScript加密算法库,用于在客户端浏览器中执行加密和解密操作。它提供了一系列常见的加密算法,如AES、DES、Triple DES、Rabbit、RC4、MD5、SHA-1等等。

Active development of CryptoJS has been discontinued. This library is no longer maintained.

Nowadays, NodeJS and modern browsers have a native Crypto module. The latest version of CryptoJS already uses the native Crypto module for random number generation, since Math.random() is not crypto-safe. Further development of CryptoJS would result in it only being a wrapper of native Crypto. Therefore, development and maintenance has been discontinued, it is time to go for the native crypto module.
根据官方的建议,现代的 Node.js 和现代浏览器已经内置了原生的 Crypto 模块,用于进行加密和安全操作。原生的 Crypto 模块提供了更可靠和安全的加密功能,因此,使用原生的 Crypto 模块是更好的选择。

如果你的项目需要进行加密操作,我建议使用 Node.js 的原生 Crypto 模块。具体使用方式和 API 可以参考 Node.js 官方文档中关于 Crypto 模块的部分:https://nodejs.org/api/crypto.html

对于浏览器端,可以使用 Web Crypto API 来进行加密操作。Web Crypto API 是浏览器提供的原生加密 API,它提供了一系列的加密算法和操作方法。具体使用方式和 API 可以参考 MDN 文档中关于 Web Crypto API 的部分:https://developer.mozilla.org/en-US/docs/Web/API/Web_Crypto_API

通过使用原生的 Crypto 模块,你可以获得更好的性能和更高的安全性,同时避免使用不再维护的 CryptoJS 库。

安装依赖

npm install crypto-js

MD5

MD5是一种常用的哈希算法,不可逆。用于将任意长度的消息压缩成一个128位的摘要。MD5算法具有以下特点:

压缩性:任意长度的消息都可以被压缩成一个128位的摘要。
容易计算:MD5算法的计算速度比较快,适用于对大量数据进行哈希计算。
抗修改性:对原始数据进行任何修改,都会导致哈希值的变化。
抗碰撞性:对不同的原始数据,哈希值相同的概率非常小。

  const CryptoJS = require("crypto-js");  // 生成随机数  const randomNumber = Math.floor(Math.random() * 1000000).toString();  const md5Value = CryptoJS.MD5(randomNumber).toString();

原生 Web Crypto API

对于浏览器端,可以使用 Web Crypto API 来进行加密操作。Web Crypto API 是浏览器提供的原生加密 API,它提供了一系列的加密算法和操作方法。具体使用方式和 API 可以参考 MDN 文档中关于 Web Crypto API 的部分:https://developer.mozilla.org/en-US/docs/Web/API/Web_Crypto_API

md5

Web Crypto API 不直接支持 MD5 加密算法。

官方提到了 MD5 的一些特点和安全性问题:
MD5 是一种密码学哈希函数,可以生成 128 位(16 字节)的哈希值。然而,由于存在漏洞,MD5 被认为是不安全的,并不适合进一步使用。官方建议在密码学用途中使用更安全的替代算法,如 SHA-256 或 SHA-3。

总结,MD5 不再被认为是安全的密码学哈希函数,因此不建议在安全敏感的应用中使用它。如果你需要进行哈希计算,请考虑使用更安全的替代算法,如 SHA-256。

sha256

async function computeSHA256Hash(data) {  const encoder = new TextEncoder();  const dataBuffer = encoder.encode(data);  const hashBuffer = await crypto.subtle.digest('SHA-256', dataBuffer);  const hashArray = Array.from(new Uint8Array(hashBuffer));  const hashHex = hashArray.map(byte => byte.toString(16).padStart(2, '0')).join('');  return hashHex;}function generateAppSecret() {  // 生成随机数  const randomNumber = Math.floor(Math.random() * 1000000).toString();  return computeSHA256Hash(randomNumber);}

注意:crypto.subtle.digest() 方法需要在 HTTPS 或者 localhost(即本地开发环境)下运行,这是为了确保在安全的环境中使用加密功能。这是因为加密操作通常涉及敏感的数据和密钥,为了保护这些信息不被恶意方截获和篡改,使用加密功能的网页必须通过 HTTPS 加密协议进行传输。

如果在非 HTTPS 或者 localhost 环境下运行 crypto.subtle.digest() 方法,浏览器会阻止该功能,并抛出错误。这是为了防止在不安全的环境中使用加密功能,以免导致安全风险。

因此,在开发和测试阶段,你可以在本地使用 localhost 运行你的应用程序,或者通过在本地配置 SSL 证书来使用 HTTPS。这样,就可以在浏览器中正常使用 crypto.subtle.digest() 方法。

请注意,当你将你的应用程序部署到真实的生产环境时,你应该使用有效的 HTTPS 证书来保证数据的安全传输。


点击全文阅读


本文链接:http://zhangshiyu.com/post/84439.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新文章

  • 丁榆:结局+番外看点十足(和渣男小叔叔的游戏日常)全书无套路阅读
  • 法医狂妃:王爷你命中缺我小说(苏七夜景辰)全本完整阅读最新章节(法医狂妃:王爷你命中缺我)_笔趣阁
  • (头条)洛甯陆乘渊小说(闪婚老公是卧底,消失三年回来了)整本免费版阅读无广告(洛甯陆乘渊)
  • 陆少今天又秀恩爱了吗后续(陆怀骁苏棠)(陆少今天又秀恩爱了吗)整本畅享在线+无广告结局
  • 独家江柏俊夏清恬无删减(重生之团长俊夫要离婚)(江柏俊夏清恬)TXT免费版阅读
  • 全网首发重生下乡嫁糙汉,渣男全家悔哭了彩蛋(师明凯颜惜雪)(重生下乡嫁糙汉,渣男全家悔哭了)全本完整阅读无弹窗
  • 我是让他不屑一顾,不愿多看一眼的路人小说(安喻意商晋深)(我是让他不屑一顾,不愿多看一眼的路人)在线畅读阅读连载中
  • 丁榆后续(和渣男小叔叔的游戏日常)全文在线下载在线+纯净版结局
  • 洛甯陆乘渊::结局+番外评价五颗星-闪婚老公是卧底,消失三年回来了:结局+番外新上热文
  • 前传孟流年周丽珍续集(孟流年周丽珍)终章阅读极简(孟流年周丽珍)
  • 夏语栀祁墨寒我们各归人海,此生,也不必再见彩蛋小说结尾+附加(我们各归人海,此生,也不必再见)清爽版阅读
  • 重生下乡嫁糙汉,渣男全家悔哭了小说完结篇(师明凯颜惜雪)(重生下乡嫁糙汉,渣男全家悔哭了)全书无套路阅读无广告小说大结局

    关于我们 | 我要投稿 | 免责申明

    Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1