Object 內置對象

對象Digest

信息摘要對象

可以這樣使用Digest 對象:

1 2 3 4 5 6 7 8 9 10 11 12 13
const 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, 查詢當前信息摘要算法的摘要字節數

1
readonly Integer Digest.size;

成員函數

update

更新二進制摘要信息

1
Digest Digest.update(Buffer data);

調用參數:

  • data:Buffer, 二進制數據塊

返回結果:

  • Digest, 返回信息摘要對象本身

digest

計算並返回摘要

1
Value Digest.digest(String codec = "buffer");

調用參數:

  • codec: String, 指定編碼格式,允許值為:"buffer", "hex", "base32", "base58", "base64", "utf8", 或者iconv模塊支持的字符集

返回結果:

  • Value, 返回指定編碼的摘要表示

sign

簽名並返回摘要

1 2
Buffer 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 3
Boolean Digest.verify(PKey key, Buffer sign, Object opts = {}) async;

調用參數:

  • key:PKey, 驗證簽名的公鑰
  • sign:Buffer, 指定要驗證的簽名
  • opts: Object, 指定驗證選項

返回結果:

  • 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]",對象可以根據自己的特性重新實現

1
String Digest.toString();

返回結果:

  • String, 返回對象的字符串表示

toJSON

返回對象的JSON 格式表示,一般返回對象定義的可讀屬性集合

1
Value Digest.toJSON(String key = "");

調用參數:

  • key: String, 未使用

返回結果:

  • Value, 返回包含可JSON 序列化的值