Crypto 加密模塊

2018-07-11 09:52 更新

使用require('crypto')來訪問這個(gè)模塊。

crypto 模塊需要node 所運(yùn)行的運(yùn)行支持OpenSSL,該模塊為使用安全證書實(shí)現(xiàn)HTTPS 安全網(wǎng)絡(luò)以及HTTP 連 接提供了支持。 模塊同樣為OpenSSL 的hash、hmac、cipher、decipher、sign 以及verify 方法提供一層包裝(以方便在Node 中 使用)。

crypto.createCredentials(details)

建立一個(gè)證書對(duì)象,參數(shù)detail 是由鍵值對(duì)組成的字典。

key : 一個(gè)字符串,包含PEM 編碼的私鑰

cert: 一個(gè)字符串,包含PEM 編碼的證書

ca : 一個(gè)包含PEM 編碼的、可信任的數(shù)字中心認(rèn)證證書的字符串或者字符串列表

如果參數(shù)details 中沒有'ca' , 那么node.js 將缺省使用http://mxr.mozilla.org/mozilla/source/security/nss/lib/ckfw/builtins/certdata.txt 中給出的可信任的公鑰。

crypto.createHash(algorithm)

通過參數(shù)algorithm 指定算法建立并且返回一個(gè)哈希對(duì)象,可以用來產(chǎn)生哈希摘要。 algorithm 參數(shù)依賴于node 運(yùn)行平臺(tái)上OpenSSL 所支持的有效算法。例如sha1,md5,sha256,sha512等,在最近發(fā) 布的版本中, openssl list-message-digest-algorithms 將顯示有效的算法摘要。

hash.update(data)

使用data 更新哈希表。當(dāng)以流的方式接受新數(shù)據(jù)時(shí)(數(shù)據(jù)可能被為分多次接收),可多次調(diào)用此方法。

hash.digest(encoding='binary')

計(jì)算所有傳遞來數(shù)據(jù)的哈希摘要。編碼可以是'hex','binary'或者'base64'。

crypto.createHmac(algorithm, key)

通過指定算法(algorithm)和密鑰(key)建立并返回一個(gè)加密的hmac 對(duì)象。 和createhash 函數(shù)一樣,參數(shù)algorithm 的選擇依賴于node 運(yùn)行平臺(tái)上OpenSSL 所支持的有效算法,key 是要使 用的HMAC 私鑰。

hmac.update(data)

更新指定數(shù)據(jù)(參數(shù)data)的hmac 的內(nèi)容,當(dāng)以流的方式接收新數(shù)據(jù)(參數(shù)data)時(shí),可多次調(diào)用此方法。

hmac.digest(encoding='binary')

計(jì)算所有傳遞來數(shù)據(jù)的hmac 摘要。編碼可以是'hex','binary'或者'base64' 。

crypto.createCipher(algorithm, key)

通過指定算法(algorithm )和密鑰(key)建立并返回一個(gè)cipher 對(duì)象 算法參數(shù)的內(nèi)容依賴于OPENSSL 所支持的有效算法,例如aes192等等。OpenSSL 的list-cipher-algorithms 將顯 示有效的cipher 算法。

cipher.update(data, input_encoding='binary', output_encoding='binary')

更新參數(shù)data 所代表的cipher , input_encodin 是初始數(shù)據(jù)的編碼, 編碼可以是'utf8','ascii' 或者'binary' 。 output_encoding 參數(shù)指定了加密數(shù)據(jù)的輸出編碼,編碼可以是'binary','base64'或者'hex'。 返回加密后的內(nèi)容,當(dāng)以流的方式接收新數(shù)據(jù)時(shí),可多次調(diào)用此方法。

cipher.final(output_encoding='binary')

返回剩余的已加密內(nèi)容,output_eocoding 可以是'binary','ascii','utf8'中的一個(gè)。

crypto.createDecipher(algorithm, key)

通過參數(shù)algorithm 和key 建立并返回一個(gè)decipher 對(duì)象。這是前面cipher 對(duì)象的一個(gè)鏡像.

decipher.update(data, input_encoding='binary', output_encoding='binary')

更新參數(shù)data 所代表的decipher ,input_encoding 是初始數(shù)據(jù)的編碼,編碼可以是'binary','base64'或者'hex'。 output_encoding 參數(shù)指定了已解密的銘文的輸出編碼,編碼可以是'binary','base64'或者'hext'

decipher.final(output_encoding='binary')

返回其余解密后的文本。參數(shù)output_encoding 是'binary', 'ascii' or 'utf8'中的一個(gè).

crypto.createSign(algorithm)

通過參數(shù)algorithm 建立并返回一個(gè)signing 對(duì)象。根據(jù)當(dāng)前openSSL 版本,penssl 的list-public-key-algorithms 將 顯示singning 的有效算法.例如'RSA-SHA256'.

signer.update(data)

用參數(shù)data 更新signer 對(duì)象,當(dāng)以流的方式接收新數(shù)據(jù)時(shí),可多次調(diào)用此方法。

signer.sign(private_key, output_format='binary')

計(jì)算所有signer 里已經(jīng)更新的數(shù)據(jù)的簽名。private_key 是一個(gè)字符串,包含用于簽名的PEM 編碼的私鑰。 返回用output_format 指定編碼的簽名,編碼可以是'binary', 'hex' or 'base64'

crypto.createVerify(algorithm)

通過指定algorithm 建立并返回一個(gè)verification 對(duì)象.這是上面signing 對(duì)象的一個(gè)鏡像。

verifier.update(data)

用新數(shù)據(jù)(參數(shù)data)更新verifyer 對(duì)象,當(dāng)以流的方式接收新數(shù)據(jù)時(shí),可多次調(diào)用此方法。

verifier.verify(public_key, signature, signature_format='binary')

用包含有PEM 編碼的公鑰,即參數(shù)public_key 來驗(yàn)證電子簽名數(shù)據(jù)。參數(shù)signature 是先前用此數(shù)據(jù)計(jì)算的簽 名,參數(shù)signature_format 可以是'binary', 'hex' or 'base64'. 根據(jù)簽名和公鑰對(duì)數(shù)據(jù)的驗(yàn)證結(jié)果返回true 或false。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)