环境:前端vue3,服务端go
需求1:const hashed = (mac+symbol+timestamp)的blake2b128 hash值
需求2:使用aescbc-128算法加密token、body
需求3:解密接口返回的response data
blake2b
- 使用 npm 或者 yarn 安装依赖
npm install blake2b
或者
bashCopy codeyarn add blake2b
- 在 Vue 3 项目中引入库:
import blake2b from 'blake2b';
- 在需要使用 Blake2b-128 哈希的地方,调用库进行计算:
js复制代码// 计算 Blake2b-128 哈希
const hash = blake2b(16).update('Hello, World!').digest('hex');
console.log(hash)
💡
在 blake2b(16) 中的 16 表示生成的 Blake2b 哈希的输出长度(以字节为单位)。在这种情况下,16 表示输出的哈希值长度为 16 字节,即 128 位。
Blake2b 是一种多功能哈希函数,它可以生成不同长度的哈希值。通过指定不同的输出长度,你可以控制生成的哈希值的位数。例如,如果你想要一个 256 位的哈希值,你可以使用 blake2b(32),其中 32 表示输出长度为 32 字节(256 位)。
在使用 Blake2b 哈希库时,根据你的具体需求,你可以选择适当的输出长度来满足你的要求。请注意,输出长度越长,哈希值的唯一性和强度可能会更高,但也会增加存储和传输的开销。
AES-CBC-128加密算法
使用CryptoJS 库来实现
- 使用 npm 或 yarn 安装 CryptoJS:
npm install crypto-js
或者
yarn add crypto-js
- 在需要使用 AES-CBC-128 加密的地方,引入库:
import CryptoJS from 'crypto-js';
- 使用 CryptoJS 进行 AES-CBC-128 加密:
js复制代码// 定义密钥和初始向量(示例)
const key = CryptoJS.enc.Hex.parse('000102030405060708090a0b0c0d0e0f'); // 128-bit key
const iv = CryptoJS.enc.Hex.parse('101112131415161718191a1b1c1d1e1f'); // 128-bit IV
// 加密
const plaintext = 'Hello, World!';
const encrypted = CryptoJS.AES.encrypt(plaintext, key, { iv: iv }).toString();
console.log(encrypted);
在上述示例中,我们使用 CryptoJS 库进行 AES-CBC-128 加密。我们提供了一个 128 位的密钥和一个 128 位的初始向量(IV),并使用 CryptoJS.AES.encrypt 方法进行加密操作。加密结果以字符串形式输出。
实操
以上是两个工具的基本用法,接下来进入实践部分
前提:const ac = 与服务端约定一个常量
目标:在请求头中添加session
aescbc-128加密(计算session)
const ac = "aaabbbccc"
token: "aaabbbccc"
- ac+timestamp(时间戳),计算blake2b128得到hash值
- 使用aescbc-128算法加密token,加密key为ha