介绍
Crypts 是一个基于 JavaScript 的加密工具库,可以用于生成加密字符串、hash 散列值、加密解密明文等常用任务。它支持多种常用加密算法,如 MD5、SHA1、SHA256 等等,并且是一个跨平台的 npm 包。
安装
你可以使用 npm 包管理器来安装 crypts 来获得其功能。
npm install crypts
用法
在 Node.js 中,你可以使用 require() 方法来引入 crypts 模块,然后开始使用其提供的接口。例如:
const crypts = require('crypts'); const plainText = 'hello, world!'; const encryptText = crypts.MD5(plainText); console.log('Plain text: ', plainText); console.log('Encrypt text: ', encryptText);
在浏览器中,你需要在 HTML 文件的 <head>
标签中添加以下脚本代码:
<script src="https://unpkg.com/crypts@latest/dist/crypts.min.js"></script>
然后在 JavaScript 代码中,同样可以通过全局变量 crypts
来使用其提供的 API。
const plainText = 'hello, world!'; const encryptText = crypts.MD5(plainText); console.log('Plain text: ', plainText); console.log('Encrypt text: ', encryptText);
API 文档
crypts.MD5(plainText)
计算给定字符串的 MD5 哈希值。
const plainText = 'hello, world!'; const encryptText = crypts.MD5(plainText);
crypts.SHA1(plainText)
计算给定字符串的 SHA1 哈希值。
const plainText = 'hello, world!'; const encryptText = crypts.SHA1(plainText);
crypts.SHA256(plainText)
计算给定字符串的 SHA256 哈希值。
const plainText = 'hello, world!'; const encryptText = crypts.SHA256(plainText);
crypts.AES.encrypt(plainText, key)
使用 AES 加密算法将明文加密为密文。
const plainText = 'hello, world!'; const key = 'secretKey'; const encryptText = crypts.AES.encrypt(plainText, key);
crypts.AES.decrypt(cipherText, key)
使用 AES 加密算法将密文解密为明文。
const cipherText = '4b6a602285246f4c6ec762afc3058f57'; const key = 'secretKey'; const plainText = crypts.AES.decrypt(cipherText, key);
案例
生成 Token
在一些前端应用场景下,我们需要生成一个唯一的 token 令牌用于客户端与服务端之间的通讯,用 crypts 来生成这样一个 token 令牌非常的安全可靠。我们可以使用以下方式来生成一个唯一的 token:
const crypts = require('crypts'); const tokenContent = 'userId=666'; const secretKey = 'my-secret-key'; const currentTime = new Date().getTime(); const encryptText = crypts.SHA256(`${tokenContent}${currentTime}${secretKey}`); const token = `${tokenContent}.${currentTime}.${encryptText}`;
安全存储密码
在用户的密码登录验证问题上,使用 crypts 来进行加密存储用户密码可以保证用户账号密码的安全性。首先我们要在用户注册和修改密码时,将用户密码使用 crypts 进行加密和存储,例如:
-- -------------------- ---- ------- ----- ------ - ------------------ ----- ---- - - --------- ------- --------- -------------- -- --------- - -------------------- ----------------- - ---------------------------------------- ----------- ------ -------------- -- -- ---- ------
其中,createSalt 方法用于生成密码的随机 salt 值,而 createPasswordHash 方法则是用于生成密码的哈希值。那么我们来看看这两个方法的具体实现:
-- -------------------- ---- ------- ----- ------ - ------------------ ----- ------ - - -- ------- ---- ------------ - ------ ------------------------------------------ -- -- -------- ---------------------------- ----- - ----- ---- - --------------------------- ------ ---------------------- ------ ------------------- -- -- -------------- - -------
在用户登录验证时,我们要将用户输入的明文密码使用 createPasswordHash 方法生成哈希值,然后与存储介质中的哈希值进行比对来验证密码是否正确,例如:
-- -------------------- ---- ------- ----- ------ - ------------------ ----- -------- - ------- ----- -------- - -------------- -- ------------------------ ---- ----- ---- - - ------------- -------- ----- ------- -- ----- ---- - ----------------------------------- ----------- -- ----- --- ------------------ - -------------------- - ---- - -------------------- -
结论
在前端开发中,数据加密是一个非常重要的安全考虑点,使用 crypts 包可以帮助我们使用常见加密算法以及保证密码存储的安全性等。当然,大家也可以基于 crypts 这个库进行二次封装和自定义实现,使其更加符合业务和实际需求。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/5eedbc64b5cbfe1ea0611a02