模組hash
hash 模組主要用於實現訊息摘要演算法,是實現加密演算法中,非常重要的一個子模組。同時,訊息摘要演算法也是許多加密演算法的基礎。
在使用hash
子模組之前,需要使用require('hash');
載入該模組。
在hash
模組中,主要包含以下幾個類別Digest
、Hmac
。其中,Digest
類別用於計算訊息摘要演算法,Hmac
類別用於計算帶有密鑰的雜湊訊息。
以下是一個簡單的使用Digest
類別計算MD5
摘要的範例程式碼:
1
2
3
4
5
6
7
8
9
10
11
12const hash = require('hash');
// create a MD5 digest object
const digest = hash.digest(hash.MD5);
// update digest with data
const data = 'hello, world';
digest.update(data);
// output result in hex
const result = digest.digest('hex');
console.log(result);
在上述範例程式碼中,我們首先使用hash.digest([hash.MD5](hash.md#MD5))
將一個Digest
物件初始化為MD5
模式。然後,我們使用update()
方法向Digest 物件新增需要進行摘要計算的資料。接著,我們使用digest()
方法計算摘要結果,並傳回透過參數指定的編碼方式(這裡使用的是十六進位編碼)。最後,輸出計算出的摘要結果。
除了MD5
以外,Digest
類別也支援其他摘要演算法,如SHA-1
、SHA-256
、SHA-512
等。使用時需要將md5
參數改成對應的摘要演算法即可。
靜態函數
digest
根據指定的演算法識別建立一個資訊摘要運算對象
1
2static Digest hash.digest(Integer algo,
Buffer data = NULL);
呼叫參數:
- algo: Integer, 指定摘要運算演算法
- data:Buffer, 建立同時更新的二進位數據,預設為null,不更新數據
回傳結果:
- Digest, 傳回建構的資訊摘要對象
md5
建立一個MD5 資訊摘要運算對象
1static Digest hash.md5(Buffer data = NULL);
呼叫參數:
- data:Buffer, 建立同時更新的二進位數據,預設為null,不更新數據
回傳結果:
- Digest, 傳回建構的資訊摘要對象
sha1
建立一個SHA1 資訊摘要運算對象
1static Digest hash.sha1(Buffer data = NULL);
呼叫參數:
- data:Buffer, 建立同時更新的二進位數據,預設為null,不更新數據
回傳結果:
- Digest, 傳回建構的資訊摘要對象
sha224
建立一個SHA224 資訊摘要運算對象
1static Digest hash.sha224(Buffer data = NULL);
呼叫參數:
- data:Buffer, 建立同時更新的二進位數據,預設為null,不更新數據
回傳結果:
- Digest, 傳回建構的資訊摘要對象
sha256
建立一個SHA256 資訊摘要運算對象
1static Digest hash.sha256(Buffer data = NULL);
呼叫參數:
- data:Buffer, 建立同時更新的二進位數據,預設為null,不更新數據
回傳結果:
- Digest, 傳回建構的資訊摘要對象
sha384
建立一個SHA384 資訊摘要運算對象
1static Digest hash.sha384(Buffer data = NULL);
呼叫參數:
- data:Buffer, 建立同時更新的二進位數據,預設為null,不更新數據
回傳結果:
- Digest, 傳回建構的資訊摘要對象
sha512
建立一個SHA512 資訊摘要運算對象
1static Digest hash.sha512(Buffer data = NULL);
呼叫參數:
- data:Buffer, 建立同時更新的二進位數據,預設為null,不更新數據
回傳結果:
- Digest, 傳回建構的資訊摘要對象
ripemd160
建立一個RIPEMD160 資訊摘要運算對象
1static Digest hash.ripemd160(Buffer data = NULL);
呼叫參數:
- data:Buffer, 建立同時更新的二進位數據,預設為null,不更新數據
回傳結果:
- Digest, 傳回建構的資訊摘要對象
sm3
建立一個SM3 資訊摘要運算對象
1static Digest hash.sm3(Buffer data = NULL);
呼叫參數:
- data:Buffer, 建立同時更新的二進位數據,預設為null,不更新數據
回傳結果:
- Digest, 傳回建構的資訊摘要對象
建立一個SM3 資訊摘要運算物件並進行預處理
1
2
3static Digest hash.sm3(PKey pubKey,
String id,
Buffer data = NULL);
呼叫參數:
回傳結果:
- Digest, 傳回建構的資訊摘要對象
sha3_256
建立一個SHA3_256 資訊摘要運算對象
1static Digest hash.sha3_256(Buffer data = NULL);
呼叫參數:
- data:Buffer, 建立同時更新的二進位數據,預設為null,不更新數據
回傳結果:
- Digest, 傳回建構的資訊摘要對象
sha3_384
建立一個SHA3_384 資訊摘要運算對象
1static Digest hash.sha3_384(Buffer data = NULL);
呼叫參數:
- data:Buffer, 建立同時更新的二進位數據,預設為null,不更新數據
回傳結果:
- Digest, 傳回建構的資訊摘要對象
sha3_512
建立一個SHA3_512 資訊摘要運算對象
1static Digest hash.sha3_512(Buffer data = NULL);
呼叫參數:
- data:Buffer, 建立同時更新的二進位數據,預設為null,不更新數據
回傳結果:
- Digest, 傳回建構的資訊摘要對象
shake128
建立一個SHAKE128 資訊摘要運算對象
1static Digest hash.shake128(Buffer data = NULL);
呼叫參數:
- data:Buffer, 建立同時更新的二進位數據,預設為null,不更新數據
回傳結果:
- Digest, 傳回建構的資訊摘要對象
shake256
建立一個SHAKE256 資訊摘要運算對象
1static Digest hash.shake256(Buffer data = NULL);
呼叫參數:
- data:Buffer, 建立同時更新的二進位數據,預設為null,不更新數據
回傳結果:
- Digest, 傳回建構的資訊摘要對象
keccak256
建立一個KECCAK256 資訊摘要運算對象
1static Digest hash.keccak256(Buffer data = NULL);
呼叫參數:
- data:Buffer, 建立同時更新的二進位數據,預設為null,不更新數據
回傳結果:
- Digest, 傳回建構的資訊摘要對象
keccak384
建立一個KECCAK384 資訊摘要運算對象
1static Digest hash.keccak384(Buffer data = NULL);
呼叫參數:
- data:Buffer, 建立同時更新的二進位數據,預設為null,不更新數據
回傳結果:
- Digest, 傳回建構的資訊摘要對象
keccak512
建立一個KECCAK512 資訊摘要運算對象
1static Digest hash.keccak512(Buffer data = NULL);
呼叫參數:
- data:Buffer, 建立同時更新的二進位數據,預設為null,不更新數據
回傳結果:
- Digest, 傳回建構的資訊摘要對象
blake2s
建立一個BLAKE2S 資訊摘要運算對象
1static Digest hash.blake2s(Buffer data = NULL);
呼叫參數:
- data:Buffer, 建立同時更新的二進位數據,預設為null,不更新數據
回傳結果:
- Digest, 傳回建構的資訊摘要對象
blake2b
建立一個BLAKE2B 資訊摘要運算對象
1static Digest hash.blake2b(Buffer data = NULL);
呼叫參數:
- data:Buffer, 建立同時更新的二進位數據,預設為null,不更新數據
回傳結果:
- Digest, 傳回建構的資訊摘要對象
blake2sp
建立一個BLAKE2SP 資訊摘要運算對象
1static Digest hash.blake2sp(Buffer data = NULL);
呼叫參數:
- data:Buffer, 建立同時更新的二進位數據,預設為null,不更新數據
回傳結果:
- Digest, 傳回建構的資訊摘要對象
blake2bp
建立一個BLAKE2BP 資訊摘要運算對象
1static Digest hash.blake2bp(Buffer data = NULL);
呼叫參數:
- data:Buffer, 建立同時更新的二進位數據,預設為null,不更新數據
回傳結果:
- Digest, 傳回建構的資訊摘要對象
hmac
根據指定的演算法識別建立一個資訊摘要簽名運算對象
1
2
3static Digest hash.hmac(Integer algo,
Buffer key,
Buffer data = NULL);
呼叫參數:
回傳結果:
- Digest, 傳回建構的資訊摘要對象
hmac_md5
建立一個MD5 資訊摘要簽章運算對象
1
2static Digest hash.hmac_md5(Buffer key,
Buffer data = NULL);
呼叫參數:
回傳結果:
- Digest, 傳回建構的資訊摘要對象
hmac_sha1
建立一個SHA1 資訊摘要簽章運算對象
1
2static Digest hash.hmac_sha1(Buffer key,
Buffer data = NULL);
呼叫參數:
回傳結果:
- Digest, 傳回建構的資訊摘要對象
hmac_sha224
建立一個SHA224 資訊摘要簽章運算對象
1
2static Digest hash.hmac_sha224(Buffer key,
Buffer data = NULL);
呼叫參數:
回傳結果:
- Digest, 傳回建構的資訊摘要對象
hmac_sha256
建立一個SHA256 資訊摘要簽章運算對象
1
2static Digest hash.hmac_sha256(Buffer key,
Buffer data = NULL);
呼叫參數:
回傳結果:
- Digest, 傳回建構的資訊摘要對象
hmac_sha384
建立一個SHA384 資訊摘要簽章運算對象
1
2static Digest hash.hmac_sha384(Buffer key,
Buffer data = NULL);
呼叫參數:
回傳結果:
- Digest, 傳回建構的資訊摘要對象
hmac_sha512
建立一個SHA512 資訊摘要簽章運算對象
1
2static Digest hash.hmac_sha512(Buffer key,
Buffer data = NULL);
呼叫參數:
回傳結果:
- Digest, 傳回建構的資訊摘要對象
hmac_ripemd160
建立一個RIPEMD160 資訊摘要簽章運算對象
1
2static Digest hash.hmac_ripemd160(Buffer key,
Buffer data = NULL);
呼叫參數:
回傳結果:
- Digest, 傳回建構的資訊摘要對象
hmac_sm3
建立一個SM3 資訊摘要簽章運算對象
1
2static Digest hash.hmac_sm3(Buffer key,
Buffer data = NULL);
呼叫參數:
回傳結果:
- Digest, 傳回建構的資訊摘要對象
建立一個SM3 資訊摘要簽章運算子並進行預處理
1
2
3
4static Digest hash.hmac_sm3(PKey pubKey,
String id,
Buffer key,
Buffer data = NULL);
呼叫參數:
回傳結果:
- Digest, 傳回建構的資訊摘要對象
hmac_sha3_256
建立一個SHA3_256 資訊摘要簽章運算對象
1
2static Digest hash.hmac_sha3_256(Buffer key,
Buffer data = NULL);
呼叫參數:
回傳結果:
- Digest, 傳回建構的資訊摘要對象
hmac_sha3_384
建立一個SHA3_384 資訊摘要簽章運算對象
1
2static Digest hash.hmac_sha3_384(Buffer key,
Buffer data = NULL);
呼叫參數:
回傳結果:
- Digest, 傳回建構的資訊摘要對象
hmac_shake128
建立一個SHAKE128 資訊摘要簽章運算對象
1
2static Digest hash.hmac_shake128(Buffer key,
Buffer data = NULL);
呼叫參數:
回傳結果:
- Digest, 傳回建構的資訊摘要對象
hmac_shake256
建立一個SHAKE256 資訊摘要簽章運算對象
1
2static Digest hash.hmac_shake256(Buffer key,
Buffer data = NULL);
呼叫參數:
回傳結果:
- Digest, 傳回建構的資訊摘要對象
hmac_sha3_512
建立一個SHA3_512 資訊摘要簽章運算對象
1
2static Digest hash.hmac_sha3_512(Buffer key,
Buffer data = NULL);
呼叫參數:
回傳結果:
- Digest, 傳回建構的資訊摘要對象
hmac_keccak256
建立一個KECCAK256 資訊摘要簽章運算對象
1
2static Digest hash.hmac_keccak256(Buffer key,
Buffer data = NULL);
呼叫參數:
回傳結果:
- Digest, 傳回建構的資訊摘要對象
hmac_keccak384
建立一個KECCAK384 資訊摘要簽章運算對象
1
2static Digest hash.hmac_keccak384(Buffer key,
Buffer data = NULL);
呼叫參數:
回傳結果:
- Digest, 傳回建構的資訊摘要對象
hmac_keccak512
建立一個KECCAK512 資訊摘要簽章運算對象
1
2static Digest hash.hmac_keccak512(Buffer key,
Buffer data = NULL);
呼叫參數:
回傳結果:
- Digest, 傳回建構的資訊摘要對象
hmac_blake2s
建立一個BLAKE2S 資訊摘要簽章運算對象
1
2static Digest hash.hmac_blake2s(Buffer key,
Buffer data = NULL);
呼叫參數:
回傳結果:
- Digest, 傳回建構的資訊摘要對象
hmac_blake2b
建立一個BLAKE2B 資訊摘要簽章運算對象
1
2static Digest hash.hmac_blake2b(Buffer key,
Buffer data = NULL);
呼叫參數:
回傳結果:
- Digest, 傳回建構的資訊摘要對象
hmac_blake2sp
建立一個BLAKE2SP 資訊摘要簽章運算對象
1
2static Digest hash.hmac_blake2sp(Buffer key,
Buffer data = NULL);
呼叫參數:
回傳結果:
- Digest, 傳回建構的資訊摘要對象
hmac_blake2bp
建立一個BLAKE2BP 資訊摘要簽章運算對象
1
2static Digest hash.hmac_blake2bp(Buffer key,
Buffer data = NULL);
呼叫參數:
回傳結果:
- Digest, 傳回建構的資訊摘要對象
常量
MD5
MD5 資訊摘要演算法標識常數
1const hash.MD5 = 1;
SHA1
SHA1 資訊摘要演算法標識常數
1const hash.SHA1 = 2;
SHA224
SHA224 資訊摘要演算法標識常數
1const hash.SHA224 = 3;
SHA256
SHA256 資訊摘要演算法標識常數
1const hash.SHA256 = 4;
SHA384
SHA384 資訊摘要演算法標識常數
1const hash.SHA384 = 5;
SHA512
SHA512 資訊摘要演算法標識常數
1const hash.SHA512 = 6;
RIPEMD160
RIPEMD160 資訊摘要演算法標識常數
1const hash.RIPEMD160 = 7;
SM3
SM3 資訊摘要演算法標識常數
1const hash.SM3 = 8;
SHA3_256
SHA3_256 資訊摘要演算法識別常數
1const hash.SHA3_256 = 9;
SHA3_384
SHA3_384 資訊摘要演算法識別常數
1const hash.SHA3_384 = 10;
SHA3_512
SHA3_512 資訊摘要演算法識別常數
1const hash.SHA3_512 = 11;
SHAKE128
SHAKE128 資訊摘要演算法識別常數
1const hash.SHAKE128 = 12;
SHAKE256
SHAKE256 資訊摘要演算法識別常數
1const hash.SHAKE256 = 13;
KECCAK256
KECCAK256 資訊摘要演算法識別常數
1const hash.KECCAK256 = 14;
KECCAK384
KECCAK384 資訊摘要演算法識別常數
1const hash.KECCAK384 = 15;
KECCAK512
KECCAK512 資訊摘要演算法識別常數
1const hash.KECCAK512 = 16;
BLAKE2S
BLAKE2S 資訊摘要演算法識別常數
1const hash.BLAKE2S = 17;
BLAKE2B
BLAKE2B 資訊摘要演算法識別常數
1const hash.BLAKE2B = 18;
BLAKE2SP
BLAKE2SP 資訊摘要演算法識別常數
1const hash.BLAKE2SP = 19;
BLAKE2BP
BLAKE2BP 資訊摘要演算法識別常數
1const hash.BLAKE2BP = 20;