物件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, 傳回資訊摘要物件本身
更新字串摘要訊息
1
2Digest Digest.update(String data,
String codec = "utf8");
呼叫參數:
- data: String, 字串數據
- codec: String, 指定編碼格式,允許值為:"buffer", "hex", "base32", "base58", "base64", "utf8", 或者iconv模組支援的字元集
回傳結果:
- 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{
alg: 0 指定签名的 hash 算法, 仅在 RSA 时有效, 缺省为 0. 支持算法: 0 = NONE,
1 = MD5,
2 = SHA1,
3 = SHA224,
4 = SHA256,
5 = SHA384,
6 = SHA512,
7 = RIPEMD160
}
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{
alg: 0 指定签名的 hash 算法, 仅在 RSA 时有效, 缺省为 0. 支持算法: 0 = NONE,
1 = MD5,
2 = SHA1,
3 = SHA224,
4 = SHA256,
5 = SHA384,
6 = SHA512,
7 = RIPEMD160
}
toString
傳回物件的字串表示,一般回傳"[Native Object]",物件可以根據自己的特性重新實現
1String Digest.toString();
回傳結果:
- String, 傳回物件的字串表示
toJSON
傳回物件的JSON 格式表示,一般傳回物件定義的可讀屬性集合
1Value Digest.toJSON(String key = "");
呼叫參數:
- key: String, 未使用
回傳結果:
- Value, 傳回包含可JSON 序列化的值