jsSHA

2024-06-26 11:10:54 124
jsSHA 是一个用于计算各种哈希值的 JavaScript/TypeScript 库,支持完整的安全哈希算法(SHA)家族,包括 SHA-1、SHA-224、SHA-256、SHA-384、SHA-512 以及 SHA-3 系列、SHAKE、cSHAKE 和 KMAC。它在浏览器和 Node.js 环境中均可运行。

特点

  • 多种哈希算法支持:支持 SHA-1、SHA-224、SHA-256、SHA-384、SHA-512、SHA-3 系列、SHAKE、cSHAKE 和 KMAC。
  • HMAC 支持:支持基于 SHA 算法的 HMAC。
  • 跨浏览器兼容:在所有主流浏览器和 Node.js 环境中运行良好。
  • 模块化设计:可以选择性地包含所需的哈希算法,减少不必要的负载。
  • 高性能:通过优化实现确保高效的哈希计算。

使用场景

  • 数据完整性验证:验证数据传输或存储过程中是否被篡改。
  • 密码学应用:用于安全认证和数据加密。
  • 文件校验:用于生成文件的哈希值进行完整性校验。

安装方式

可以通过 npm 或直接在 HTML 文件中引入 jsSHA。

使用 npm 安装

npm install jssha

在 HTML 文件中引入

<script type="text/javascript" src="path/to/sha.js"></script>

使用示例

计算 SHA-256 哈希值

const jsSHA = require("jssha");
const shaObj = new jsSHA("SHA-256", "TEXT");
shaObj.update("This is my text");
const hash = shaObj.getHash("HEX");
console.log(hash);  // 输出 SHA-256 哈希值

计算 HMAC-SHA-512

const shaObj = new jsSHA("SHA-512", "TEXT", { hmacKey: { value: "myKey", format: "TEXT" } });
shaObj.update("This is my text");
const hmac = shaObj.getHash("HEX");
console.log(hmac);  // 输出 HMAC-SHA-512 值

常用 API 介绍

  • 构造函数

    new jsSHA(variant, inputFormat, options);
    
    • variant:哈希算法的变体,例如 "SHA-256"。
    • inputFormat:输入格式,可以是 "TEXT"、"HEX"、"B64" 等。
    • options:可选参数,如 encoding(编码格式)。
  • update

    shaObj.update(data);
    
    • data:要更新的字符串数据。
  • getHash

    shaObj.getHash(outputFormat);
    
    • outputFormat:输出格式,可以是 "HEX"、"B64" 等。
  • getHMAC

    shaObj.getHMAC(key, keyFormat, outputFormat);
    
    • key:用于 HMAC 的密钥。
    • keyFormat:密钥的格式。
    • outputFormat:输出格式。

官方资料