# 加密(Crypto)
~~~
穩(wěn)定度: 2 - 不穩(wěn)定;正在討論未來(lái)版本的API變動(dòng)。會(huì)盡量減少重大變動(dòng)的發(fā)生。詳見(jiàn)下文。
~~~
使用 `require('crypto')` 來(lái)調(diào)用該模塊。
crypto模塊提供在HTTPS或HTTP連接中封裝安全憑證的方法.
它提供OpenSSL中的一系列哈希方法,包括hmac、cipher、decipher、簽名和驗(yàn)證等方法的封裝。
### crypto.getCiphers()
返回一個(gè)數(shù)組,包含支持的加密算法的名字。
實(shí)例:
~~~
var ciphers = crypto.getCiphers();
console.log(ciphers); // ['AES-128-CBC', 'AES-128-CBC-HMAC-SHA1', ...]
~~~
### crypto.getHashes()
返回一個(gè)包含所支持的哈希算法的數(shù)組。
實(shí)例:
~~~
var hashes = crypto.getHashes();
console.log(hashes); // ['sha', 'sha1', 'sha1WithRSAEncryption', ...]
~~~
### crypto.createCredentials(details)
創(chuàng)建一個(gè)加密憑證對(duì)象,接受一個(gè)可選的參數(shù)對(duì)象:
- `pfx` : 一個(gè)字符串或者buffer對(duì)象,代表經(jīng)PFX或者PKCS12編碼產(chǎn)生的私鑰、證書(shū)以及CA證書(shū)
- `key` : 一個(gè)字符串,代表經(jīng)PEM編碼產(chǎn)生的私鑰
- `passphrase` : 私鑰或者pfx的密碼
- `cert` : 一個(gè)字符串,代表經(jīng)PEM編碼產(chǎn)生的證書(shū)
- `ca` : 一個(gè)字符串或者字符串?dāng)?shù)組,表示可信任的經(jīng)PEM編碼產(chǎn)生的CA證書(shū)列表
- `crl` : 一個(gè)字符串或者字符串?dāng)?shù)組,表示經(jīng)PEM編碼產(chǎn)生的CRL(證書(shū)吊銷列表 Certificate Revocation List)
- `ciphers`: 一個(gè)字符串,表示需要使用或者排除的加密算法 可以在 [http://www.openssl.org/docs/apps/ciphers.html#CIPHER_LIST_FORMAT](http://www.openssl.org/docs/apps/ciphers.html#CIPHER_LIST_FORMAT) 查看更多關(guān)于加密算法格式的資料。
如果沒(méi)有指定`ca`,node.js會(huì)使用[http://mxr.mozilla.org/mozilla/source/security/nss/lib/ckfw/builtins/certdata.txt](http://mxr.mozilla.org/mozilla/source/security/nss/lib/ckfw/builtins/certdata.txt)提供的公共可信任的CA列表。
### crypto.createHash(algorithm)
創(chuàng)建并返回一個(gè)哈希對(duì)象,一個(gè)使用所給算法的用于生成摘要的加密哈希。
`algorithm` 取決與平臺(tái)上所安裝的 OpenSSL 版本所支持的算法。比如 `'sha1'`、`'md5'`、`'sha256'`、`'sha512'` 等等。在最近的發(fā)行版本中,`openssl list-message-digest-algorithms` 會(huì)顯示可用的摘要算法。
例子:這段程序會(huì)計(jì)算出一個(gè)文件的 sha1 摘要值。
~~~
s.on('end', function() {
var d = shasum.digest('hex');
console.log(d + ' ' + filename);
});
~~~
### 類: Hash
創(chuàng)建數(shù)據(jù)哈希摘要的類。
它是一個(gè)既可讀又可寫(xiě)的[流](#)。所寫(xiě)入的數(shù)據(jù)會(huì)被用作計(jì)算哈希。當(dāng)流的可寫(xiě)端終止后,使用 `read()` 方法來(lái)獲取計(jì)算得的哈希摘要。同時(shí)也支持舊有的 `update` 和 `digest` 方法。
通過(guò) `crypto.createHash` 返回。
### hash.update(data, [input_encoding])
通過(guò)提供的數(shù)據(jù)更新哈希對(duì)象,可以通過(guò)`input_encoding`指定編碼為`'utf8'`、`'ascii'`或者 `'binary'`。如果沒(méi)有指定編碼,將作為二進(jìn)制數(shù)據(jù)(buffer)處理。
因?yàn)樗橇魇綌?shù)據(jù),所以可以使用不同的數(shù)據(jù)調(diào)用很多次。
### hash.digest([encoding])
計(jì)算傳入的所有數(shù)據(jù)的摘要值。`encoding`可以是`'hex'`、`'binary'`或者`'base64'`,如果沒(méi)有指定,會(huì)返回一個(gè)buffer對(duì)象。
注意:`hash` 對(duì)象在 `digest()` 方法被調(diào)用后將不可用。
### crypto.createHmac(algorithm, key)
創(chuàng)建并返回一個(gè)hmac對(duì)象,也就是通過(guò)給定的加密算法和密鑰生成的加密圖譜(cryptographic)。
它是一個(gè)既可讀又可寫(xiě)的流([stream](#))。寫(xiě)入的數(shù)據(jù)會(huì)被用于計(jì)算hmac。寫(xiě)入終止后,可以使用`read()`方法獲取計(jì)算后的摘要值。之前版本的`update`和`digest`方法仍然支持。
`algorithm`在OpenSSL支持的算法列表中被拋棄了——見(jiàn)上方createHash部分。`key`是hmac算法用到的密鑰。
### Class: Hmac
用于創(chuàng)建hmac加密圖譜(cryptographic)的類。
由`crypto.createHmac`返回。
### hmac.update(data)
通過(guò)提供的數(shù)據(jù)更新hmac對(duì)象。因?yàn)樗橇魇綌?shù)據(jù),所以可以使用新數(shù)據(jù)調(diào)用很多次。
### hmac.digest([encoding])
計(jì)算傳入的所有數(shù)據(jù)的hmac摘要值。`encoding`可以是`'hex'`、`'binary'`或者`'base64'`,如果沒(méi)有指定,會(huì)返回一個(gè)buffer對(duì)象。
注意: `hmac`對(duì)象在調(diào)用`digest()`之后就不再可用了。
### crypto.createCipher(algorithm, password)
用給定的算法和密碼,創(chuàng)建并返回一個(gè)cipher加密算法的對(duì)象。(譯者:cipher 就是加密算法的意思, ssl 的 cipher 主要是對(duì)稱加密算法和不對(duì)稱加密算法的組合。)
`algorithm`算法是依賴OpenSSL庫(kù)的, 例如: `'aes192'`算法等。在最近發(fā)布的版本, 執(zhí)行命令 `openssl list-cipher-algorithms` 就會(huì)顯示出所有可用的加密算法,`password`是用來(lái)派生key和IV的,它必須是一個(gè) `'binary'` 2進(jìn)制格式的字符串或者是一個(gè)[buffer](#)。(譯者:key表示密鑰,IV表示向量在加密過(guò)程和解密過(guò)程都要使用)
它是一個(gè)既可讀又可寫(xiě)的[流](#)。所寫(xiě)入的數(shù)據(jù)會(huì)被用作計(jì)算哈希。當(dāng)流的可寫(xiě)端終止后,使用 `read()` 方法來(lái)獲取計(jì)算得的哈希摘要。同時(shí)也支持舊有的 `update` 和 `digest` 方法。
### crypto.createCipheriv(algorithm, key, iv)
用給定的算法、密碼和向量,創(chuàng)建并返回一個(gè)cipher加密算法的對(duì)象。
`algorithm`算法和`createCipher()` 方法的參數(shù)相同. `key`密鑰是一個(gè)被算法使用的原始密鑰,`iv`是一個(gè)[初始化向量](http://en.wikipedia.org/wiki/Initialization_vector)。
`key`密鑰和`iv`向量必須是`'binary'`2進(jìn)制格式的字符串或[buffers](#).
### Class: Cipher
這個(gè)類是用來(lái)加密數(shù)據(jù)的。
這個(gè)類由 `crypto.createCipher` 和 `crypto.createCipheriv` 返回。
Cipher加密對(duì)象是 [streams](#),他是具有 readable 可讀和 writable 可寫(xiě)的。寫(xiě)入的純文本數(shù)據(jù)是用來(lái)在可讀流一側(cè)加密數(shù)據(jù)的。 以前版本的`update` 和`final`方法也還是支持的。
### cipher.update(data, [input_encoding], [output_encoding])
用`data`參數(shù)更新cipher加密對(duì)象, 它的編碼`input_encoding`必須是下列給定編碼的 `'utf8'`, `'ascii'` or `'binary'` 中一種。如果沒(méi)有編碼參數(shù),那么打他參數(shù)必須是一個(gè)buffer。
參數(shù) `output_encoding`輸出編碼指定了加密數(shù)據(jù)的輸出格式,可以是`'binary'`, `'base64'` 或者`'hex'`,如果沒(méi)有提供這個(gè)參數(shù),buffer將會(huì)返回。
返回加密內(nèi)容,并且Returns the enciphered contents, 用新數(shù)據(jù)作為流的話,它可以被調(diào)用多次。
### cipher.final([output_encoding])
返回剩余的加密內(nèi)容,`output_encoding`為`'binary'`, `'base64'` 或 `'hex'`中的任意一個(gè)。 如果沒(méi)有提供編碼格式,則返回一個(gè)buffer對(duì)象。
注: 調(diào)用`final()`函數(shù)后`cipher` 對(duì)象不能被使用。
### cipher.setAutoPadding(auto_padding=true)
對(duì)于將輸入數(shù)據(jù)自動(dòng)填充到塊大小的功能,你可以將其禁用。如果`auto_padding`是false, 那么整個(gè)輸入數(shù)據(jù)的長(zhǎng)度必須是加密器的塊大小的整倍數(shù),否則`final`會(huì)失敗。這對(duì)非標(biāo)準(zhǔn)的填充很有用,例如使用`0x0`而不是PKCS的填充。這個(gè)函數(shù)必須在`cipher.final`之前調(diào)用。
### crypto.createDecipher(algorithm, password)
根據(jù)給定的算法和密鑰,創(chuàng)建并返回一個(gè)解密器對(duì)象。這是上述[createCipher()](#)的一個(gè)鏡像。
### crypto.createDecipheriv(algorithm, key, iv)
Creates and returns a decipher object, with the given algorithm, key and iv. This is the mirror of the [createCipheriv()](#) above. 根據(jù)給定的算法,密鑰和初始化向量,創(chuàng)建并返回一個(gè)解密器對(duì)象。這是上述[createCipheriv()](#)的一個(gè)鏡像。
### Class: Decipher
解密數(shù)據(jù)的類。
由`crypto.createDecipher`和`crypto.createDecipheriv`返回。
解密器對(duì)象是可讀寫(xiě)的[流](#)對(duì)象。用被寫(xiě)入的加密數(shù)據(jù)生成可讀的平文數(shù)據(jù)。解碼器對(duì)象也支持The legacy `update`和 `final`函數(shù)。
### decipher.update(data, [input_encoding], [output_encoding])
用`data`來(lái)更新解密器,其中`data`以`'binary'`, `'base64'` 或 `'hex'`進(jìn)行編碼。如果沒(méi)有指明編碼方式,則默認(rèn)`data`是一個(gè)buffer對(duì)象。
`output_decoding`指明了用以下哪種編碼方式返回解密后的平文:`'binary'`, `'ascii'` 或 `'utf8'`。如果沒(méi)有指明編碼方式,則返回一個(gè)buffer對(duì)象。
### decipher.final([output_encoding])
返回剩余的加密內(nèi)容,`output_encoding`為`'binary'`, `'ascii'` 或 `'utf8'`中的任意一個(gè)。如果沒(méi)有指明編碼方式,則返回一個(gè)buffer對(duì)象。
注: 調(diào)用`final()`函數(shù)后不能使用`decipher` 對(duì)象。
### decipher.setAutoPadding(auto_padding=true)
如果數(shù)據(jù)以非標(biāo)準(zhǔn)的塊填充方式被加密,那么你可以禁用自動(dòng)填充來(lái)防止`decipher.final`對(duì)數(shù)據(jù)進(jìn)行檢查和移除。這只有在輸入數(shù)據(jù)的長(zhǎng)度是加密器塊大小的整倍數(shù)時(shí)才有效。這個(gè)函數(shù)必須在將數(shù)據(jù)流傳遞給`decipher.update`之前調(diào)用。
### crypto.createSign(algorithm)
根據(jù)給定的算法,創(chuàng)建并返回一個(gè)signing對(duì)象。在最近的OpenSSL發(fā)布版本中,`openssl list-public-key-algorithms`會(huì)列出可用的簽名算法,例如`'RSA-SHA256'`。
### Class: Sign
生成數(shù)字簽名的類
由`crypto.createSign`返回。
Sign對(duì)象是可寫(xiě)的[流](#)對(duì)象。被寫(xiě)入的數(shù)據(jù)用來(lái)生成數(shù)字簽名。當(dāng)所有的數(shù)據(jù)都被寫(xiě)入后,`sign` 函數(shù)會(huì)返回?cái)?shù)字簽名。Sign對(duì)象也支持The legacy `update`函數(shù)。
### sign.update(data)
用`data`來(lái)更新sign對(duì)象。 This can be called many times with new data as it is streamed.
### sign.sign(private_key, [output_format])
根據(jù)所有傳送給sign的更新數(shù)據(jù)來(lái)計(jì)算電子簽名。`private_key`是一個(gè)包含了簽名私鑰的字符串,而該私鑰是用PEM編碼的。
返回一個(gè)數(shù)字簽名,該簽名的格式可以是`'binary'`, `'hex'`或 `'base64'`. 如果沒(méi)有指明編碼方式,則返回一個(gè)buffer對(duì)象。
注:調(diào)用`sign()`后不能使用`sign`對(duì)象。
### crypto.createVerify(algorithm)
根據(jù)指明的算法,創(chuàng)建并返回一個(gè)驗(yàn)證器對(duì)象。這是上述簽名器對(duì)象的鏡像。
### Class: Verify
用來(lái)驗(yàn)證數(shù)字簽名的類。
由 `crypto.createVerify`返回。
驗(yàn)證器對(duì)象是可寫(xiě)的[流](#)對(duì)象. 被寫(xiě)入的數(shù)據(jù)會(huì)被用來(lái)驗(yàn)證提供的數(shù)字簽名。在所有的數(shù)據(jù)被寫(xiě)入后,如果提供的數(shù)字簽名有效,`verify`函數(shù)會(huì)返回真。驗(yàn)證器對(duì)象也支持 The legacy `update`函數(shù)。
### verifier.update(data)
用數(shù)據(jù)更新驗(yàn)證器對(duì)象。This can be called many times with new data as it is streamed.
### verifier.verify(object, signature, [signature_format])
用`object`和`signature`來(lái)驗(yàn)證被簽名的數(shù)據(jù)。 `object`是一個(gè)字符串,這個(gè)字符串包含了一個(gè)被PEM編碼的對(duì)象,這個(gè)對(duì)象可以是RSA公鑰,DSA公鑰或者X.509 證書(shū)。 `signature`是之前計(jì)算出來(lái)的數(shù)字簽名,其中的 `signature_format`可以是`'binary'`, `'hex'` 或 `'base64'`. 如果沒(méi)有指明編碼方式,那么默認(rèn)是一個(gè)buffer對(duì)象。
根據(jù)數(shù)字簽名對(duì)于數(shù)據(jù)和公鑰的有效性,返回true或false。
注: 調(diào)用`verify()`函數(shù)后不能使用`verifier`對(duì)象。
### crypto.createDiffieHellman(prime_length)
創(chuàng)建一個(gè)迪菲-赫爾曼密鑰交換(Diffie-Hellman key exchange)對(duì)象,并根據(jù)給定的位長(zhǎng)度生成一個(gè)質(zhì)數(shù)。所用的生成器是`s`。
### crypto.createDiffieHellman(prime, [encoding])
根據(jù)給定的質(zhì)數(shù)創(chuàng)建一個(gè)迪菲-赫爾曼密鑰交換(Diffie-Hellman key exchange)對(duì)象。 所用的生成器是`2`。編碼方式可以是`'binary'`, `'hex'`或 `'base64'`。如果沒(méi)有指明編碼方式,則默認(rèn)是一個(gè)buffer對(duì)象。
### Class: DiffieHellman
創(chuàng)建迪菲-赫爾曼密鑰交換(Diffie-Hellman key exchanges)的類。
由`crypto.createDiffieHellman`返回。
### diffieHellman.generateKeys([encoding])
生成迪菲-赫爾曼(Diffie-Hellman)算法的公鑰和私鑰,并根據(jù)指明的編碼方式返回公鑰。這個(gè)公鑰可以轉(zhuǎn)交給第三方。編碼方式可以是 `'binary'`, `'hex'`或 `'base64'`. 如果沒(méi)有指明編碼方式,則返回一個(gè)buffer對(duì)象。
### diffieHellman.computeSecret(other_public_key, [input_encoding], [output_encoding])
以`other_public_key`作為第三方公鑰來(lái)計(jì)算共享秘密,并返回這個(gè)共享秘密。參數(shù)中的密鑰會(huì)以`input_encoding`編碼方式來(lái)解讀,而共享密鑰則會(huì)用`output_encoding`進(jìn)行編碼。編碼方式可以是`'binary'`, `'hex'`或 `'base64'`。如果沒(méi)有提供輸入的編碼方式,則默認(rèn)為一個(gè)buffer對(duì)象。
如果沒(méi)有指明輸出的編碼方式,則返回一個(gè)buffer對(duì)象。
### diffieHellman.getPrime([encoding])
根據(jù)指明的編碼格式返回迪菲-赫爾曼(Diffie-Hellman)質(zhì)數(shù),其中編碼方式可以是`'binary'`, `'hex'` 或 `'base64'`。如果沒(méi)有指明編碼方式,則返回一個(gè)buffer對(duì)象。
### diffieHellman.getGenerator([encoding])
根據(jù)指明的編碼格式返回迪菲-赫爾曼(Diffie-Hellman)質(zhì)數(shù),其中編碼方式可以是`'binary'`, `'hex'` 或 `'base64'`。如果沒(méi)有指明編碼方式,則返回一個(gè)buffer對(duì)象。
### diffieHellman.getPublicKey([encoding])
根據(jù)指明的編碼格式返回迪菲-赫爾曼(Diffie-Hellman)公鑰,其中編碼方式可以是`'binary'`, `'hex'` 或 `'base64'`。 如果沒(méi)有指明編碼方式,則返回一個(gè)buffer對(duì)象。
### diffieHellman.getPrivateKey([encoding])
根據(jù)指明的編碼格式返回迪菲-赫爾曼(Diffie-Hellman)私鑰,其中編碼方式可以是`'binary'`, `'hex'` 或 `'base64'`。如果沒(méi)有指明編碼方式,則返回一個(gè)buffer對(duì)象。
### diffieHellman.setPublicKey(public_key, [encoding])
設(shè)置迪菲-赫爾曼(Diffie-Hellman)公鑰,編碼方式可以是可以是`'binary'`, `'hex'` 或 `'base64'`。如果沒(méi)有指明編碼方式,則返回一個(gè)buffer對(duì)象。
### diffieHellman.setPrivateKey(private_key, [encoding])
設(shè)置迪菲-赫爾曼(Diffie-Hellman)私鑰,編碼方式可以是可以是`'binary'`, `'hex'` 或 `'base64'`。如果沒(méi)有指明編碼方式,則返回一個(gè)buffer對(duì)象。
### crypto.getDiffieHellman(group_name)
創(chuàng)建一個(gè)預(yù)定義的迪菲-赫爾曼密鑰交換(Diffie-Hellman key exchanges)對(duì)象。支持以下的D-H組:`'modp1'`, `'modp2'`, `'modp5'` (在[RFC 2412](http://www.rfc-editor.org/rfc/rfc2412.txt)中定義) 和 `'modp14'`, `'modp15'`, `'modp16'`, `'modp17'`, `'modp18'` (在 [RFC 3526](http://www.rfc-editor.org/rfc/rfc3526.txt)中定義)。返回的對(duì)象模仿了上述 [crypto.createDiffieHellman()](#)方法所創(chuàng)建的對(duì)象的接口,但不會(huì)暈允許密鑰交換 (例如像 [diffieHellman.setPublicKey()](#)那樣)。執(zhí)行這套流程的好處是雙方不需要事先生成或交換組余數(shù),節(jié)省了處理和通信時(shí)間。
例子 (獲取一個(gè)共享秘密):
~~~
/* alice_secret和 bob_secret應(yīng)該是一樣的 */
console.log(alice_secret == bob_secret);
~~~
### crypto.pbkdf2(password, salt, iterations, keylen, callback)
異步PBKDF2提供了一個(gè)偽隨機(jī)函數(shù) HMAC-SHA1,根據(jù)給定密碼的長(zhǎng)度,salt和iterations來(lái)得出一個(gè)密鑰?;卣{(diào)函數(shù)得到兩個(gè)參數(shù) `(err, derivedKey)`。
### crypto.pbkdf2Sync(password, salt, iterations, keylen)
同步 PBKDF2 函數(shù)。返回derivedKey或拋出一個(gè)錯(cuò)誤。
### crypto.randomBytes(size, [callback])
生成密碼學(xué)強(qiáng)度的偽隨機(jī)數(shù)據(jù)。用法:
~~~
// 同步
try {
var buf = crypto.randomBytes(256);
console.log('有 %d 字節(jié)的隨機(jī)數(shù)據(jù): %s', buf.length, buf);
} catch (ex) {
// handle error
}
~~~
### crypto.pseudoRandomBytes(size, [callback])
生成*非*密碼學(xué)強(qiáng)度的偽隨機(jī)數(shù)據(jù)。如果數(shù)據(jù)足夠長(zhǎng)的話會(huì)返回一個(gè)唯一的數(shù)據(jù),但這個(gè)返回值不一定是不可預(yù)料的?;谶@個(gè)原因,當(dāng)不可預(yù)料性很重要時(shí),這個(gè)函數(shù)的返回值永遠(yuǎn)都不應(yīng)該被使用,例如在生成加密的密鑰時(shí)。
用法與 `crypto.randomBytes`一模一樣。
### crypto.DEFAULT_ENCODING
對(duì)于可以接受字符串或buffer對(duì)象的函數(shù)的默認(rèn)編碼方式。默認(rèn)值是`'buffer'`,所以默認(rèn)使用Buffer對(duì)象。這是為了讓crypto模塊與默認(rèn)`'binary'`為編碼方式的遺留程序更容易兼容。
要注意,新的程序會(huì)期待buffer對(duì)象,所以使用這個(gè)時(shí)請(qǐng)只作為暫時(shí)的手段。
### Recent API Changes
早在統(tǒng)一的流API概念出現(xiàn),以及引入Buffer對(duì)象來(lái)處理二進(jìn)制數(shù)據(jù)之前,Crypto模塊就被添加到Node。
因?yàn)檫@樣,與流有關(guān)的類中并沒(méi)有其它Node類的典型函數(shù),而且很多函數(shù)接受和返回默認(rèn)的二進(jìn)制編碼的字符串,而不是Buffer對(duì)象。在最近的修改中,這些函數(shù)都被改成默認(rèn)使用Buffer對(duì)象。
這對(duì)于某些(但不是全部)使用場(chǎng)景來(lái)講是重大的改變。
例如,如果你現(xiàn)在使用Sign類的默認(rèn)參數(shù),然后在沒(méi)有檢查數(shù)據(jù)的情況下,將結(jié)果傳遞給Verify類,那么程序會(huì)照常工作。在以前,你會(huì)拿到一個(gè)二進(jìn)制字符串,然后它傳遞給Verify對(duì)象;而現(xiàn)在,你會(huì)得到一個(gè)Buffer對(duì)象,然后把它傳遞給Verify對(duì)象。
但是,如果你以前是使用那些在Buffer對(duì)象上不能正常工作的字符串?dāng)?shù)據(jù),或者以默認(rèn)編碼方式將二進(jìn)制數(shù)據(jù)傳遞給加密函數(shù)的話,那你就要開(kāi)始提供編碼方式參數(shù)來(lái)指明你想使用的編碼方式了。如果想準(zhǔn)換回舊的風(fēng)格默認(rèn)使用二進(jìn)制字符串,那么你需要把`crypto.DEFAULT_ENCODING`字段設(shè)為'binary'。但請(qǐng)注意,因?yàn)樾碌某绦蚝芸赡軙?huì)期望buffer對(duì)象,所以僅將此當(dāng)做臨時(shí)手段。
- 關(guān)于本文檔
- 概述
- 斷言 (assert)
- Buffer
- Addons插件
- 子進(jìn)程
- 集群
- 控制臺(tái)
- 加密(Crypto)
- 調(diào)試器
- DNS
- 域
- 事件 (Events)
- File System
- 全局對(duì)象
- HTTP
- HTTPS
- Modules
- net
- 操作系統(tǒng)
- 路徑 (Path)
- process
- punycode
- Query String
- Readline
- REPL
- Smalloc
- 流
- 字符串解碼器
- 定時(shí)器
- TLS (SSL)
- TTY
- UDP / 數(shù)據(jù)報(bào)套接字
- URL
- utils
- 執(zhí)行 JavaScript
- Zlib
- 進(jìn)度
- 感謝
