首頁 > web前端 > js教程 > 主體

NODE.JS加密模組CRYPTO常用方法介紹

高洛峰
發布: 2016-12-26 09:18:14
原創
1314 人瀏覽過

使用require('crypto')呼叫加密模組。

加密模組需要底層系統提供OpenSSL的支援。它提供了一種安全憑證的封裝方式,可以用於HTTPS安全網路以及普通HTTP連接。

該模組還提供了一套針對OpenSSL的hash(雜湊),hmac(金鑰雜湊),cipher(編碼),decipher(解碼),sign(簽章)以及verify(驗證)等方法的封裝。

crypto.createCredentials(details)

建立一個憑證對象,可選參數details為一個帶鍵值的字典:
key:為字串型,PEM編碼的私鑰。
cert:為字串型,PEM編碼的認證憑證。
ca:字串形式的PEM編碼可信任CA證書,或稱證書清單。

如果沒有給出'ca'的詳細內容,那麼node.js將會使用預設的公開受信任列表,該表位於http://mxr.mozilla.org/mozilla/source/security/nss/lib/ ckfw/builtins/certdata.txt。

crypto.createHash(algorithm)

創建並返回一個hash對象,它是一個指定演算法的加密hash,用於產生hash摘要。

參數algorithm可選擇系統上安裝的OpenSSL版本所支援的演算法。例如:'sha1', 'md5', 'sha256', 'sha512'等。在近期發行的版本中,openssl list-message-digest-algorithms會顯示這些可用的摘要演算法。

hash.update(data)

更新hash的內容為指定的data。當使用流資料時可能會多次呼叫該方法。

hash.digest(encoding='binary')

計算所有傳入資料的hash摘要。參數encoding(編碼方式)可以為'hex', 'binary' 或'base64'。

crypto.createHmac(algorithm, key)

建立並傳回hmac對象,它是一個指定演算法和金鑰的加密hmac。

參數algorithm可選擇OpenSSL支援的演算法 - 請參閱上文的createHash。參數key為hmac所使用的金鑰。

hmac.update(data)

更新hmac的內容為指定的data。當使用流資料時可能會多次呼叫該方法。

hmac.digest(encoding='binary')

計算所有傳入資料的hmac摘要。參數encoding(編碼方式)可以為'hex', 'binary' 或'base64'。

crypto.createCipher(algorithm, key)

使用指定的演算法和金鑰建立並傳回一個cipher物件。

參數algorithm可選擇OpenSSL支援的演算法,例如'aes192'等。在最近的發行版中,openssl list-cipher-algorithms會顯示可用的加密的演算法。

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

使用參數data更新要加密的內容,其編碼方式由參數input_encoding指定,可以為'utf8', 'ascii'或' binary'。參數output_encoding指定了已加密內容的輸出編碼方式,可以為 'binary', 'base64'或'hex'。

傳回已加密的內容,當使用串流資料時可能會多次呼叫該方法。

cipher.final(output_encoding='binary')

傳回所有剩餘的加密內容,output_encoding輸出編碼為'binary', 'ascii'或'utf8'其中之一。

crypto.createDecipher(algorithm, key)

使用給定的演算法和金鑰建立並傳回一個解密物件。該物件為上述加密物件的反向運算。

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

使用參數data更新要解密的內容,其編碼方式為'binary','base64'或'hex'。參數output_encoding指定了已解密的明文內容的輸出編碼方式,可以為 'binary','ascii'或'utf8'。

decipher.final(output_encoding='binary')

傳回全部剩餘的解密的明文,其output_encoding' 為'binary', 'ascii'或'utf8'`其中之一。

crypto.createSign(algorithm)

使用給定的演算法建立並傳回一個簽名器物件。在現有的OpenSSL發行版中,openssl list-public-key-algorithms會顯示可用的簽章演算法,例如:'RSA-SHA256'。

signer.update(data)

使用data參數更新簽署器物件。當使用流資料時可能會多次呼叫該方法。

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

對所有傳入簽署器的資料計算其簽章。 private_key為字串,它包含了PEM編碼的用於簽署的私鑰。

回傳簽名,其output_format輸出可以為'binary', 'hex' 或'base64'。

crypto.createVerify(algorithm)

使用給定演算法建立並傳回一個驗證器物件。它是上述簽名器物件的反向運算。

verifier.update(data)

使用data參數更新驗證器物件。當使用流資料時可能會多次呼叫該方法。

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

使用參數cert和signature驗證已簽署的數據,cert為經過PEM編碼的公鑰字串,signature為先前已計算的數據的簽名,signature_format可以為'binary','hex' 或'base64'。

根據對資料和公鑰進行簽名有效性驗證的結果,傳回true或false。

當你需要一個不可逆的加密代碼如何寫

var text = "123|12312312123123121231231212312312123123121231231212312312";
var hasher=crypto.createHash("md5");
hasher.update(text);
var hashmsg=hasher.digest('hex');//hashmsg为加密之后的数据
登入後複製

當你需要一個加密和解密的環境時

var key="asdhjwheru*asd123-123";//加密的秘钥
var text = "123|12312312123123121231231212312312123123121231231212312312";
var crypted =cipher.update(text,'utf8','hex');
crypted+=cipher.final('hex');
var message=crypted;//加密之后的值
var decipher = crypto.createDecipher('aes-256-cbc',key);
var dec=decipher.update(message,'hex','utf8');
dec+= decipher.final('utf8');//解密之后的值
登入後複製

更多NODE.JS加密模組CRYPTO常用方法介紹相關文章請關注PHP中文網!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板