【关于前端加密】CryptoJS与blake2b实践

环境:前端vue3,服务端go

需求1:const hashed = (mac+symbol+timestamp)的blake2b128 hash值

需求2:使用aescbc-128算法加密token、body

需求3:解密接口返回的response data

blake2b

  1. 使用 npm 或者 yarn 安装依赖

npm install blake2b

或者

bashCopy codeyarn add blake2b

  1. 在 Vue 3 项目中引入库:

import blake2b from 'blake2b';

  1. 在需要使用 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 库来实现

  1. 使用 npm 或 yarn 安装 CryptoJS:

npm install crypto-js

或者

yarn add crypto-js

  1. 在需要使用 AES-CBC-128 加密的地方,引入库:

import CryptoJS from 'crypto-js';

  1. 使用 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"

  1. ac+timestamp(时间戳),计算blake2b128得到hash值
  2. 使用aescbc-128算法加密token,加密key为hashed前16个字符转byte数组(Uin
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值