前端如何利用CryptoJS实现数据信息的加密详解
作者:花花世界迷人眼睛
安装
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实现数据信息加密内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!