简介
bt-data 是一个轻量级的 JavaScript 库,提供了前端实现数据加密和解密的功能。它支持主流的对称加密算法和非对称加密算法,并且具有简单易用的 API 接口,方便前端开发人员使用。
bt-data 的官方网站:https://github.com/monkindey/bt-data
安装
通过 npm 安装 bt-data:
--- ------- -------
然后在你的项目中引入:
------ ------ ---- ----------
使用
对称加密
bt-data 支持主流的对称加密算法,包括 AES、DES、3DES、RC4 和 Blowfish。
加密
使用 btData.symmetric.encrypt 对数据进行加密。API 接口如下:
----------------------------- ---------- ---------- ----- --------
参数说明:
- key:加密密钥。
- plaintext:待加密的数据,可以是一个字符串或一个 Buffer 对象。
- algorithm:加密算法,可选值为 "aes"、"des"、"3des"、"rc4" 和 "blowfish",默认值为 "aes"。
- mode:加密模式,可选值为 "ecb"、"cbc"、"cfb" 和 "ofb",默认值为 "ecb"(仅在 algorithm 为 "aes"、"des" 或 "3des" 时有效)。
- padding:填充模式,可选值为 "pkcs5"、"pkcs7"、"zero" 和 "ansix923",默认值为 "pkcs5"(仅在 algorithm 为 "aes"、"des" 或 "3des" 时有效)。
示例代码:
----- --- - ------------------- ----- --------- - ------- -------- ----- ---------- - ----------------------------- ----------- ------------------------ -- --------
解密
使用 btData.symmetric.decrypt 对加密数据进行解密。API 接口如下:
----------------------------- ----------- ---------- ----- --------
参数说明:
- key:解密密钥。
- ciphertext:待解密的数据,必须是一个已经加密过的字符串。
- algorithm:解密算法,可选值为 "aes"、"des"、"3des"、"rc4" 和 "blowfish",默认值为 "aes"。
- mode:解密模式,可选值为 "ecb"、"cbc"、"cfb" 和 "ofb",默认值为 "ecb"(仅在 algorithm 为 "aes"、"des" 或 "3des" 时有效)。
- padding:填充模式,可选值为 "pkcs5"、"pkcs7"、"zero" 和 "ansix923",默认值为 "pkcs5"(仅在 algorithm 为 "aes"、"des" 或 "3des" 时有效)。
示例代码:
----- --- - ------------------- ----- ---------- - --------------------------- ----- --------- - ----------------------------- ------------ ----------------------- -- --------
非对称加密
bt-data 支持主流的非对称加密算法,包括 RSA 和 DSA。
生成密钥对
使用 btData.asymmetric.generateKeyPair 生成密钥对。API 接口如下:
------------------------------------------ ----------
参数说明:
- keySize:密钥长度,单位为比特。对于 RSA,建议使用 1024 位或以上的密钥;对于 DSA,建议使用 512 位或以上的密钥。
- algorithm:算法名称,可选值为 "rsa" 和 "dsa",默认值为 "rsa"。
示例代码:
----- ------- - ----- ----- --------- - ------ ----- ------- - ------------------------------------------ ----------- -------------------------------- -- ---- ------------------------------- -- ----
公钥加密
使用 btData.asymmetric.encryptByPublicKey 对数据进行加密。API 接口如下:
----------------------------------------------- ---------- ----------
参数说明:
- publicKey:公钥。
- plaintext:待加密的数据,可以是一个字符串或一个 Buffer 对象。
- algorithm:加密算法,可选值为 "rsa" 和 "dsa",默认值为 "rsa"。
示例代码:
----- --------- - ----------- --- ------ ----------- - -------------------------------------------------------------------- - -------------------------------------------------------------------- - -------------------------------------------------------------------- - -------------------------------------------------------------------- - -------------------------------------------------------------------- - -------------------------------------------------------------------- - -------------------------------------------------------------------- - -------------------------------------------------------------------- - -------------------------------------------------------------------- - -------------------------------------------------------------------- - -------------------------------------------------------------------- - --------- --- ------ ------------ ----- --------- - ------- -------- ----- ---------- - ----------------------------------------------- ----------- ------------------------ -- --------
私钥解密
使用 btData.asymmetric.decryptByPrivateKey 对加密数据进行解密。API 接口如下:
------------------------------------------------- ----------- ----------
参数说明:
- privateKey:私钥。
- ciphertext:待解密的数据,必须是一个已经加密过的字符串。
- algorithm:加密算法,可选值为 "rsa" 和 "dsa",默认值为 "rsa"。
示例代码:
----- ---------- - ----------- --- ------- ----------- - -------------------------------------------------------------------- - -------------------------------------------------------------------- - -------------------------------------------------------------------- - -------------------------------------------------------------------- - -------------------------------------------------------------------- - -------------------------------------------------------------------- - -------------------------------------------------------------------- - -------------------------------------------------------------------- - -------------------------------------------------------------------- - -------------------------------------------------------------------- - --------------------------------------------------------------------- - -------------------------------------------------------------------- - -------------------------------------------------------------------- - -------------------------------------------------------------------- - -------------------------------------------------------------------- - -------------------------------------------------------------------- - -------------------------------------------------------------------- - -------------------------------------------------------------------- - -------------------------------------------------------------------- - -------------------------------------------------------------------- - -------------------------------------------------------------------- - -------------------------------------------------------------------- - -------------------------------------------------------------------- - -------------------------------------------------------------------- - -------------------------------------------------------------------- - -------------------------------------------------------------------- - -------------------------------------------------------------------- - -------------------------------------------------------------------- - -------------------------------------------------------------------- - -------------------------------------------------------------------- - -------------------------------------------------------------------- - -------------------------------------------------------------------- - -------------------------------------------------------------------- - -------------------------------------------------------------------- - -------------------------------------------------------------------- - -------------------------------------------------------------------- - -------------------------------------------------------------------- - -------------------------------------------------------------------- - -------------------------------------------------------------------- - --------------------------------------- ------------------------------------------------------------------------------ ---------- -----------------------------------------------------------------------------------------------------------------------------