前端如何利用CryptoJS实现数据信息的加密详解

 更新时间:2023年11月15日 10:34:47   作者:花花世界迷人眼睛  
这篇文章主要给大家介绍了关于前端如何利用CryptoJS实现数据信息加密的相关资料,前端解密解密工具Cryptojs提供了前端加密解密的工作,包括常用的MD5、BASE64、SHA1、AES等加密解密方法,需要的朋友可以参考下

安装

npm install crypto-js

 引入

import CryptoJS from "crypto-js";

CryptoJS是一种常用的前端加密库,支持多种加密方式,以下是其中常用的几种加密算法:

SHA256哈希算法 

SHA256是一种常见的哈希算法,可以生成一个256位的哈希值,通常用于数据签名和身份验证等场合。使用CryptoJS的SHA256方法可以方便地计算SHA256哈希值。

SHA256哈希算法,它是一种单向加密算法,不提供解密方法。它的作用是将任意长度的明文数据,经过哈希计算后生成一个固定长度的哈希值。因为一般情况下哈希值和原始数据之间的关系不可逆

//加密
const plaintilit = 'hello world'
const hash = CryptoJS.SH256(plaintilit).toString
console.log(hash)  // "b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9"

AES对称加密算法

AES是一种常见的对称加密算法,通过相同的密钥进行加密和解密,常用于数据保护和机密信息存储等场合。使用CryptoJS的AES方法可以方便地进行AES加密和解密操作。

key是对称加密算法的核心参数,同一个明文和密钥加密后得到的密文是相同的,因此密钥必须保密并且不易被破解。key的长度可以是128位、192位或256位,不同长度的key对应着不同的安全级别。

iv是用于增加加密强度的参数,它需要与key一起作为输入参数传递给加密算法。iv的长度为128位,它在每次加密时都会改变,并与key一起参与加密过程。iv的作用是将相同的明文使用不同的iv加密后生成不同的密文,从而增加破解的难度和安全性。

//设置key和对应的iv
//在CryptoJS中,CryptoJS.enc.Utf8.parse方法用于将字符串转换为UTF-8编码的字节数组,这是因为加算
//法通常需要将字符串转换为字节流进行处理。在对字符串进行加密或解密之前,需要先将其转换为字节数组。

const plaintitle = 'hello world'
const key = CryptoJS.enc.Utf8.parse('zxcvbnm')
const iv = CryptoJS.enc.Utf8.parse('zxcvbnm')

// 加密
const ciphertext = CryptoJS.AES.encrypt(plaintitle , key, { iv: iv })
console.log(ciphertext.toString())  // "U2FsdGVkX1/z9g+JQzthGtFlKeZeBjJ92Z1nxv5vxsw="

// 解密
const decrypted = CryptoJS.AES.decrypt(ciphertext, key, { iv: iv })
console.log(decrypted.toString(CryptoJS.enc.Utf8))  // "hello world"

 HMAC哈希消息认证码

HMAC是一种基于哈希函数和密钥的消息认证码算法,可以用于验证数据完整性和真实性。使用CryptoJS的HmacSHA256方法可以方便地计算HMAC-SHA256哈希值。

const plaintitle = 'hello world'
const key = CryptoJS.enc.Utf8.parse('1234567890123456')
const hmac = CryptoJS.HmacSHA256(plaintitle , key).toString()
console.log(hmac)  // "f7e329a7c587374e4ed7c80b5be95c9a5997c84da20f5aaede26327bd2b705d8"

 计算MD5哈希值

在使用toString()方法将其转换为字符串类型时,我们传入了CryptoJS.enc.Hex参数,表示将其转换为十六进制字符串格式。

var hash = CryptoJS.MD5("Message");
console.log(hash.toString(CryptoJS.enc.Hex)); // 输出16进制格式的md5哈希值

记录一些常用的加密方式

base64转码和解码 

 let str = 'ImGod';
 let str64 = window.btoa(str);
console.log('转化后:'+str64);//SW1HB2Q=
let jm = window.atob(str64);
console.log('解码后:'+jm);//ImGod

js编码

encodeURIComponent会将特殊字符(除了字母、数字、标点符号和某些保留字符以外的所有字符)都转换为UTF-8编码的格式,然后再将其转换为16进制值。

decodeURIComponent是JavaScript中的一个内置函数,用于将使用encodeURIComponent函数编码的字符串进行解码。

const text = '阿拉斯加'
const encodedText = encodeURIComponent(text)
console.log(encodedText,'url编码');

const textTitle = decodeURIComponent(encodedText)
console.log(textTitle,'url解码');

总结 

到此这篇关于前端如何利用CryptoJS实现数据信息加密的文章就介绍到这了,更多相关CryptoJS实现数据信息加密内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • JS如何显示防盗链的外站图片技巧示例

    JS如何显示防盗链的外站图片技巧示例

    通常在开发测试环节,一些资源图片会出现防盗链的错误提示,本文就通过前端基础技术,实现基本的图片跨站显示效果,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • JavaScript操作table表格:遍历、列读取、删除行、更新列等动态管理

    JavaScript操作table表格:遍历、列读取、删除行、更新列等动态管理

    本文详细介绍使用JavaScript操作HTML表格的各种技巧,包括遍历、指定列读取、删除行、根据按钮更新特定列内容,以及购物车功能实现,通过实例展示如何在网页上动态管理和更新表格数据
    2025-05-05
  • 一个兼容FF的智能超长文章分页JS

    一个兼容FF的智能超长文章分页JS

    这篇文章主要介绍了一个兼容FF的智能超长文章分页JS的相关资料,需要的朋友可以参考下
    2007-07-07
  • javascript 利用arguments实现可变长参数

    javascript 利用arguments实现可变长参数

    在C#中,有可变长参数params[],但是在js中,如何实现这种可变参数呢?本片文章主要介绍利用arguments,实现可变长参数。有需要的请参考下
    2016-11-11
  • JavaScript数字数组的13个实用小技巧

    JavaScript数字数组的13个实用小技巧

    数组是JS最常见的一种数据结构,咱们在开发中也经常用到,在这篇文章中,提供一些小技巧,帮助咱们提高开发效率,这篇文章主要给大家分享介绍了关于JavaScript数字数组的13个实用小技巧,需要的朋友可以参考下
    2023-11-11
  • JavaScript ES 模块的使用

    JavaScript ES 模块的使用

    这篇文章主要介绍了JavaScript ES 模块的使用,帮助大家更好的理解和使用JavaScript,感兴趣的朋友可以了解下
    2020-11-11
  • JavaScript中if、else if、else和switch的语法、用法及注意事项

    JavaScript中if、else if、else和switch的语法、用法及注意事项

    这篇文章主要介绍了JavaScript中的条件判断语句,包括if、elseif、else和switch的基本语法、用法及注意事项,通过这些语句,可以根据不同的条件执行相应的代码块,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-04-04
  • javascript重写alert方法的实例代码

    javascript重写alert方法的实例代码

    最近因为在flash项目中遇到as调用js函数马上弹出alert,在火狐浏览器下会卡死浏览器。介于这样我们重写alert,让alert弹出一个自定义的div弹层,来实现提示效果!
    2013-03-03
  • 基于iScroll实现下拉刷新和上滑加载效果

    基于iScroll实现下拉刷新和上滑加载效果

    这篇文章主要为大家详细介绍了基于iScroll实现下拉刷新和上滑加载效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • 浅谈js for循环输出i为同一值的问题

    浅谈js for循环输出i为同一值的问题

    下面小编就为大家带来一篇浅谈js for循环输出i为同一值的问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03

最新评论