對象Digest
信息摘要對象
可以這樣使用Digest 對象:
1
2
3
4
5
6
7
8
9
10
11
12
13const crypto = require('crypto');
// create a SHA-512 digest object
const digest = crypto.createHash('sha512');
// update digest with data
digest.update('hello');
digest.update('world');
// get digest result
const result = digest.digest();
console.log(result);
// output result in hex and base64
console.log(result.toString('hex'));
console.log(result.toString('base64'));
上述代碼中,使用 crypto.createHash()
方法創建了一個SHA-512 摘要運算對象,可以通過 update()
方法逐步添加要進行摘要的數據,並通過 digest()
方法獲取摘要結果。
繼承關係
成員屬性
size
Integer, 查詢當前信息摘要算法的摘要字節數
1readonly Integer Digest.size;
成員函數
update
更新二進制摘要信息
1Digest Digest.update(Buffer data);
調用參數:
- data:Buffer, 二進制數據塊
返回結果:
- Digest, 返回信息摘要對象本身
digest
計算並返回摘要
1Value Digest.digest(String codec = "buffer");
調用參數:
返回結果:
- Value, 返回指定編碼的摘要表示
sign
簽名並返回摘要
1
2Buffer Digest.sign(PKey key,
Object opts = {}) async;
調用參數:
- key:PKey, 簽名的私鑰
- opts: Object, 指定簽名選項
返回結果:
- Buffer, 返回簽名後的數據
opts 支持以下參數:
1
2
3
4
5
6
7
8
9
10
11
12{
alg: 0, 指定签名的 hash 算法, 仅在 RSA 时有效, 缺省为 0. 支持算法: 0 = NONE,
1 = MD5,
2 = SHA1,
3 = SHA224,
4 = SHA256,
5 = SHA384,
6 = SHA512,
7 = RIPEMD160
to: pk,
指定验证方公钥, 仅在 ecsdsa 或 sm2 时有效
}
verify
驗證簽名是否一致
1
2
3Boolean Digest.verify(PKey key,
Buffer sign,
Object opts = {}) async;
調用參數:
返回結果:
- Boolean, 返回驗證後的結果
opts 支持以下參數:
1
2
3
4
5
6
7
8
9
10
11
12{
alg: 0, 指定签名的 hash 算法, 仅在 RSA 时有效, 缺省为 0. 支持算法: 0 = NONE,
1 = MD5,
2 = SHA1,
3 = SHA224,
4 = SHA256,
5 = SHA384,
6 = SHA512,
7 = RIPEMD160
to: pk,
指定验证方公钥, 仅在 ecsdsa 或 sm2 时有效
}
toString
返回對象的字符串表示,一般返回"[Native Object]",對象可以根據自己的特性重新實現
1String Digest.toString();
返回結果:
- String, 返回對象的字符串表示
toJSON
返回對象的JSON 格式表示,一般返回對象定義的可讀屬性集合
1Value Digest.toJSON(String key = "");
調用參數:
- key: String, 未使用
返回結果:
- Value, 返回包含可JSON 序列化的值