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

这篇具有很好参考价值的文章主要介绍了前端加解密:Web Crypto API 、crypto-js 库: MD5。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

[废弃,不再维护]什么是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 证书来保证数据的安全传输。文章来源地址https://www.toymoban.com/news/detail-849703.html

到了这里,关于前端加解密:Web Crypto API 、crypto-js 库: MD5的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 前端js加密库的简单使用——crypto-js、jsrsasign、jsencrypt

    个人经验,这三个加密库的组合是最佳解决方案 crypto-js、jsrsasign、jsencrypt crypto-js 进行 AES 对称加密 jsrsasign 生成 RSA 密钥对 jsencrypt 进行 RSA 加解密

    2024年02月11日
    浏览(43)
  • 微信小程序使用crypto-js

    还是那个没有任何开发意义的小程序!!!这次的要求我就有点看不懂了,这是公司在日本出差的大佬写的接口,平时交流发在群里的文档全他喵是英文的,这让我连四级都没考过的怎么看的懂呢(是真的“没考过”),所以菜不是没有道理的。 在此之前大致搜索了一下xx

    2024年02月05日
    浏览(39)
  • 【高危】crypto-js<3.2.1 存在不安全的随机性漏洞

    crypto-js 是一个 JavaScript 加密库,用于在浏览器和 Node.js 环境中执行加密和解密操作。 crypto-js 3.2.1 之前版本中的 secureRandom 函数通过将字符串 0. 和三位随机整数拼接的格式生成加密字符串,攻击者可通过爆破破解加密字符。 漏洞名称 crypto-js3.2.1 存在不安全的随机性漏洞 漏洞

    2024年02月10日
    浏览(47)
  • python调用js文件加密时Cannot find module ‘crypto-js‘解决办法

    首先安装node.js 记得把node.js安装在你python代码文件的目录下,虽然有点乱,但是这样不容易出现其他问题,其次 然后把https://wwor.lanzoue.com/iE5Is0ixp9ef这个链接里面的压缩包直接解压到你代码文件那个node_modules里面,这个鬼东西就是你node.js安装的目录下

    2024年02月16日
    浏览(34)
  • Vue中的加密方式(js-base64、crypto-js、jsencrypt、bcryptjs)

    1.安装js-base64库  2. 在Vue组件中引入js-base64库 3.使用js-base64库进行加密 4.Vue中其他加密方式  1.crypto-js 2.jsencrypt 3.bcryptjs 使用 Base64.encode() 方法对字符串进行加密,并使用 Base64.decode() 方法对加密后的字符串进行解密。您可以根据需要使用这些方法来加密和解密字符串。请注意

    2024年02月08日
    浏览(36)
  • 微信小程序使用crypto.js加密解密

    crypto.js是用来进行AES加密的 注意AES在使用时有7个配置项,前后端加解密记着统一参数,测试时注意配置项的选择是否一致。 AES加密测试工具 文件存放路径: cryptoPro.js代码:

    2024年02月11日
    浏览(65)
  • 前端使用AES密码加密、解密,使用详细(crypto加密解密,前后端分离,AES加密解密)

    1、 首先安装 crypto-js插件,安装命令如下:    -S等同于--save,保存在package.json文件中,是在dependencies 下, --save安装包信息将加入到dependencies(生产环境)中,生产阶段的依赖,也就是项目运行时的依赖,就是程序上线后仍然需要依赖; -D等同于--save-dev,也保存在package.j

    2024年02月11日
    浏览(63)
  • JS逆向加密解密工具Crypto Magician、乐易助手、WT-JS 下载使用

    方便开发者更好的定位加密算法,提高了开发的效率,必备神器; 提示:以下是本篇文章正文内容,下面案例可供参考 下载地址:https://pan.baidu.com/s/13IxwJyIbKokpXdB4d42IOQ?pwd=chhj 消息摘要算法 对称加密算法 非对称加密算法 下载地址:https://pan.baidu.com/s/17ir4KJaXte1e88l7VfMs5A?pwd=mn1

    2024年02月11日
    浏览(78)
  • vue 使用crypto.js解密后,用JSON.parse转义报错非空白格解决办法

    用JSON.parse转义crypto解密后的json字符串会发生错误。如图: 那是因为crypto自己加了一些未可见的字符,所以用正常的JSON.parse(xxxx)会报错。

    2024年02月07日
    浏览(36)
  • 前端(js)md5加密

    1、引入md5源文件,代码如下,直接复制。 2、在页面引入md5文件。 3、使用md5加密。

    2024年02月11日
    浏览(65)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包