Node.js 提供了一个原生的 crypto
模块,用于处理加密、解密、签名以及验证等操作。但是随着业务逻辑日益复杂,原生的 crypto
模块已经无法满足现代项目的需求,特别是对于那些需要高级加密算法的项目。因此,我们需要借助第三方库来完成这些需求。
在众多的第三方加密库中,crypto-extra
是其中一款比较优秀的库,它提供了一组常见的加密、解密、签名以及验证的 API,同时还提供了更多的高级选项以满足各种特殊需求。本文将为大家介绍 crypto-extra
的使用教程,希望能对前端开发者有所帮助。
安装
使用 npm
安装 crypto-extra
十分简单,只需要在你的项目中执行以下命令即可:
npm install crypto-extra
完成后,你可以在你的项目中引入 crypto-extra
:
const CryptoJS = require('crypto-extra');
API
CryptoJS.MD5(data, outputType)
计算给定数据的 MD5 散列值。
参数:
data
: 要计算散列值的数据,可以是字符串、Buffer 或 DataView。outputType
(可选): 输出类型,可以为'hex'
、'base64'
、'latin1'
。默认值为'hex'
。
返回值:
- 计算出的散列值,根据
outputType
进行转换。
示例代码:
const data = 'hello, world'; const md5Hash = CryptoJS.MD5(data); console.log(md5Hash); // 输出: "b94d27b9934d3e08a52e52d7da7dabfa"
CryptoJS.HmacSHA1(data, key, outputType)
使用给定的密钥计算给定数据的 HMAC-SHA1 散列值。
参数:
data
: 要计算散列值的数据,可以是字符串、Buffer 或 DataView。key
: HMAC 密钥,可以是字符串、Buffer 或 DataView。outputType
(可选): 输出类型,可以为'hex'
、'base64'
、'latin1'
。默认值为'hex'
。
返回值:
- 计算出的散列值,根据
outputType
进行转换。
示例代码:
const data = 'hello, world'; const key = 'my-secret-key'; const hmac = CryptoJS.HmacSHA1(data, key); console.log(hmac); // 输出: "cf410262c471fe0567f73f3dbf8d558b3a2fa2f3"
CryptoJS.enc.Base64
一个用于处理 Base64 格式的编码和解码器。与 Node.js 中的 Buffer
类型兼容。
示例代码:
const data = 'hello, world'; const encoded = CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(data)); const decoded = CryptoJS.enc.Base64.parse(encoded).toString(CryptoJS.enc.Utf8); console.log(encoded); console.log(decoded); // 输出: // aGVsbG8sIHdvcmxk // hello, world
CryptoJS.AES.encrypt(data, key, options)
使用 AES 算法加密给定数据。
参数:
data
: 要加密的数据,可以是字符串、Buffer 或 DataView。key
: 加密密钥,可以是字符串、Buffer 或 DataView。options
(可选): 附加选项,可以包括以下字段:mode
: 加密模式,可以为'ECB'
、'CBC'
等。默认值为'CBC'
。padding
: 填充模式,可以为'PKCS7'
、'ISO10126'
等。默认值为'PKCS7'
。iv
: 初始化向量,可以为字符串、Buffer 或 DataView。默认为由库生成的随机向量。inputEncoding
和outputEncoding
: 输入和输出数据的编码类型,可以为'utf8'
、'hex'
、'base64'
等。默认值为'utf8'
。
返回值:
- 加密后的数据,类型为
CipherParams
,可以使用toString
方法得到字符串类型。
示例代码:
-- -------------------- ---- ------- ----- ---- - ------- ------- ----- --- - ---------------- ----- ------- - - ----- ------------------ -------- ------------------- --- ------------------------------------------- -- ----- --------- - -------------------------- ---- --------- ---------------------------------- -- --- ----------------------------------------------
CryptoJS.AES.decrypt(data, key, options)
使用 AES 算法解密给定数据。
参数:
data
: 要解密的数据,可以是字符串、Buffer 或 DataView。key
: 解密密钥,可以是字符串、Buffer 或 DataView。options
(可选): 附加选项,可以包括 AES 加密时设置的字段。
返回值:
- 解密后的数据,类型为
WordArray
。
示例代码:
-- -------------------- ---- ------- ----- --------- - ----------------------------------------------- ----- --- - ---------------- ----- ------- - - ----- ------------------ -------- ------------------- --- ------------------------------------------- -- ----- --------- - ------------------------------- ---- ------------------------------------- ----------------------- -- --- ------- ------
结语
本文介绍了 crypto-extra
这款优秀的加密库的使用教程和 API 详解,希望能为前端业界提供一些帮助和参考。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/69452