关于node.js:NodejsVuejs使用jsSHA库进行SHA123加密

6次阅读

共计 2028 个字符,预计需要花费 6 分钟才能阅读完成。

1 概述

jsSHA是一个用 JS+TS 实现残缺 SHA 系列加密算法的加密库,包含:

  • SHA1
  • SHA-224/256/384/512
  • SHA3-224/256/384/512
  • SHAKE128/256
  • cSHAKE128/256
  • KMAC128/256

官网 Github 戳这里,目前已有 2k 的 star,这里是一些应用加密算法的例子。

2 装置并引入

装置应用 npmcnpm

npm install --save jssha
# 或
cnpm install --save jssha

引入时,依据 package.json 中的 type 进行相应引入:

const jsSHA = require("jssha") //commonjs
import jsSHA from "jssha"      //module

若为

"type":"commonjs"

则应用

const jsSHA = require("jssha")

3 哈希

一个简略的例子如下:

const jsSHA = require("jssha")
const shaObj = new jsSHA("SHA-512","TEXT",{encoding:"UTF8"})

shaObj.update("test")
console.log(shaObj.getHash("HEX"))

首先申明了一个 shaObj,通过update 传递明文,并通过 getHash("HEX") 即失去哈希值,另外 update 能够调用屡次,最初应用 getHash 即可。

jsSHA()有三个参数:哈希算法、输出格局以及参数设置(可选)。

3.1 哈希算法

第一个参数是哈希算法,反对的算法如下:

  • SHA-1
  • SHA-224
  • SHA-256
  • SHA-384
  • SHA-512
  • SHA3-224
  • SHA3-256
  • SHA3-384
  • SHA3-512
  • SHAKE128
  • SHAKE256

目前不倡议应用SHA-1,倡议应用SHA-2SHA-224、256/384/512)或SHA-3SHA3-224/256/384/512)。

SHAKESecure Hash Algorithm and KECCAK的缩写,在 FISP 202 规范中定义,与 SHA-3 相似,然而输入是有限位数的。因而定义的时候须要指定输入的位数,不然的话会失去如下报错:

getHash 中加上参数即可:

const jsSHA = require("jssha")
const shaObj = new jsSHA("SHAKE128","TEXT",{encoding:"UTF8"})

shaObj.update("test")
console.log(shaObj.getHash("HEX",{outputLen:1024}))

3.2 输出格局

输出格局的取值如下:

  • HEX
  • TEXT
  • B64
  • BYTES
  • ARRAYBUFFER
  • UNIT8ARRAY

3.3 参数选项

个别罕用两个:

  • encoding:编码,容许取值UTF8/UTF16BE/UTF16LE
  • numRounds:哈希轮数

其余的参数能够查看源码。

3.4 getHash

getHash是获取哈希后果的函数,第一个参数能够是:

  • HEX
  • B64
  • BYTES
  • UINT8ARRAY
  • ARRAYBUFFER

与下面的输出格局对应,能够带上输入长度选项,对于 HEX 能够带上 outputUpper 示意是否大写:

4 HMAC

HMAC是一种基于哈希函数和密钥进行音讯认证的办法,应用时须要指定密钥:

const jsSHA = require("jssha")
const shaObj = new jsSHA("SHA3-512","TEXT",{hmacKey:{value:'secret key',format:'TEXT'}
})

shaObj.update("test")
console.log(shaObj.getHash("HEX"))

5 cSHAKE

cSHAKE能够看作一个 ” 定制版 ” 的 SHAKE,须要应用额定的customization 参数:

const jsSHA = require("jssha")
const shaObj = new jsSHA("CSHAKE128","TEXT",{customization:{value:"test",format:"TEXT"}
})

shaObj.update("test")
console.log(shaObj.getHash("HEX",{outputLen:1024}))

6 KMAC

KMACKECCAK Message Authentication Code)是一个基于 KECCAK 的算法,须要提供 kmacKey` 参数:

const jsSHA = require("jssha")
const shaObj = new jsSHA("KMAC128","TEXT",{kmacKey:{value:"secret key",format:"TEXT"}
})

shaObj.update("test")
console.log(shaObj.getHash("HEX",{outputLen:1024}))
正文完
 0