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

本貼純屬借鑒大神之作哼鬓,請(qǐng)各位勿噴,嘿嘿

使用require('crypto')調(diào)用加密模塊边灭。

加密模塊需要底層系統(tǒng)提供OpenSSL的支持异希。它提供了一種安全憑證的封裝方式,可以用于HTTPS安全網(wǎng)絡(luò)以及普通HTTP連接绒瘦。
該模塊還提供了一套針對(duì)OpenSSL的hash(哈希)称簿,hmac(密鑰哈希),cipher(編碼)惰帽,decipher(解碼)憨降,sign(簽名)以及verify(驗(yàn)證)等方法的封裝。

crypto.createCredentials(details)

創(chuàng)建一個(gè)憑證對(duì)象该酗,可選參數(shù)details為一個(gè)帶鍵值的字典:
key:為字符串型授药,PEM編碼的私鑰士嚎。
cert:為字符串型,PEM編碼的認(rèn)證證書(shū)悔叽。
ca:字符串形式的PEM編碼可信CA證書(shū)莱衩,或證書(shū)列表。
如果沒(méi)有給出'ca'的詳細(xì)內(nèi)容骄蝇,那么node.js將會(huì)使用默認(rèn)的公開(kāi)受信任列表膳殷,該表位于http://mxr.mozilla.org/mozilla/source/security/nss/lib/ckfw/builtins/certdata.txt

crypto.createHash(algorithm)

創(chuàng)建并返回一個(gè)hash對(duì)象九火,它是一個(gè)指定算法的加密hash赚窃,用于生成hash摘要。
參數(shù)algorithm可選擇系統(tǒng)上安裝的OpenSSL版本所支持的算法岔激。例如:'sha1', 'md5', 'sha256', 'sha512'等勒极。在近期發(fā)行的版本中,openssl list-message-digest-algorithms會(huì)顯示這些可用的摘要算法虑鼎。

hash.update(data)

更新hash的內(nèi)容為指定的data辱匿。當(dāng)使用流數(shù)據(jù)時(shí)可能會(huì)多次調(diào)用該方法。

hash.digest(encoding='binary')

計(jì)算所有傳入數(shù)據(jù)的hash摘要炫彩。參數(shù)encoding(編碼方式)可以為'hex', 'binary' 或者'base64'匾七。

crypto.createHmac(algorithm, key)

創(chuàng)建并返回一個(gè)hmac對(duì)象,它是一個(gè)指定算法和密鑰的加密hmac江兢。
參數(shù)algorithm可選擇OpenSSL支持的算法 - 參見(jiàn)上文的createHash昨忆。參數(shù)key為hmac所使用的密鑰。

hmac.update(data)

更新hmac的內(nèi)容為指定的data杉允。當(dāng)使用流數(shù)據(jù)時(shí)可能會(huì)多次調(diào)用該方法邑贴。

hmac.digest(encoding='binary')

計(jì)算所有傳入數(shù)據(jù)的hmac摘要。參數(shù)encoding(編碼方式)可以為'hex', 'binary' 或者'base64'叔磷。

crypto.createCipher(algorithm, key)

使用指定的算法和密鑰創(chuàng)建并返回一個(gè)cipher對(duì)象拢驾。
參數(shù)algorithm可選擇OpenSSL支持的算法,例如'aes192'等改基。在最近的發(fā)行版中繁疤,openssl list-cipher-algorithms會(huì)顯示可用的加密的算法。

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

使用參數(shù)data更新要加密的內(nèi)容寥裂,其編碼方式由參數(shù)input_encoding指定嵌洼,可以為 'utf8', 'ascii'或者'binary'。參數(shù)output_encoding指定了已加密內(nèi)容的輸出編碼方式封恰,可以為 'binary', 'base64'或'hex'麻养。
返回已加密的內(nèi)容,當(dāng)使用流數(shù)據(jù)時(shí)可能會(huì)多次調(diào)用該方法诺舔。

cipher.final(output_encoding='binary')

返回所有剩余的加密內(nèi)容鳖昌,output_encoding輸出編碼為'binary', 'ascii'或'utf8'其中之一备畦。

crypto.createDecipher(algorithm, key)

使用給定的算法和密鑰創(chuàng)建并返回一個(gè)解密對(duì)象。該對(duì)象為上述加密對(duì)象的反向運(yùn)算许昨。

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

使用參數(shù)data更新要解密的內(nèi)容懂盐,其編碼方式為'binary','base64'或'hex'糕档。參數(shù)output_encoding指定了已解密的明文內(nèi)容的輸出編碼方式莉恼,可以為 'binary','ascii'或'utf8'速那。

decipher.final(output_encoding='binary')

返回全部剩余的已解密的明文俐银,其output_encoding' 為'binary', 'ascii'或'utf8'`其中之一。

crypto.createSign(algorithm)

使用給定的算法創(chuàng)建并返回一個(gè)簽名器對(duì)象端仰。在現(xiàn)有的OpenSSL發(fā)行版中捶惜,openssl list-public-key-algorithms會(huì)顯示可用的簽名算法,例如:'RSA-SHA256'荔烧。

signer.update(data)

使用data參數(shù)更新簽名器對(duì)象吱七。當(dāng)使用流數(shù)據(jù)時(shí)可能會(huì)多次調(diào)用該方法。

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

對(duì)所有傳入簽名器的數(shù)據(jù)計(jì)算其簽名鹤竭。private_key為字符串踊餐,它包含了PEM編碼的用于簽名的私鑰。
返回簽名臀稚,其output_format輸出可以為'binary', 'hex' 或者'base64'市袖。

crypto.createVerify(algorithm)

使用給定算法創(chuàng)建并返回一個(gè)驗(yàn)證器對(duì)象。它是上述簽名器對(duì)象的反向運(yùn)算烁涌。

verifier.update(data)

使用data參數(shù)更新驗(yàn)證器對(duì)象。當(dāng)使用流數(shù)據(jù)時(shí)可能會(huì)多次調(diào)用該方法酒觅。

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

使用參數(shù)cert和signature驗(yàn)證已簽名的數(shù)據(jù)撮执,cert為經(jīng)過(guò)PEM編碼的公鑰字符串,signature為之前已計(jì)算的數(shù)據(jù)的簽名舷丹,signature_format可以為'binary'抒钱,'hex' 或者'base64'。
根據(jù)對(duì)數(shù)據(jù)和公鑰進(jìn)行簽名有效性驗(yàn)證的結(jié)果颜凯,返回true或者false谋币。
當(dāng)你需要一個(gè)不可逆的加密代碼如何寫(xiě)

var text = "123|12312312123123121231231212312312123123121231231212312312";
var hasher=crypto.createHash("md5");
hasher.update(text);
var hashmsg=hasher.digest('hex');//hashmsg為加密之后的數(shù)據(jù)

當(dāng)你需要一個(gè)加密和解密的環(huán)境時(shí)

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');//解密之后的值

PS:關(guān)于加密技術(shù),本站還提供了如下加密工具供大家參考使用:

MD5在線加密工具:http://tools.jb51.net/password/CreateMD5Password
Escape加密/解密工具:http://tools.jb51.net/password/escapepwd
在線SHA1加密工具:http://tools.jb51.net/password/sha1encode
短鏈(短網(wǎng)址)在線生成工具:http://tools.jb51.net/password/dwzcreate
短鏈(短網(wǎng)址)在線還原工具:http://tools.jb51.net/password/unshorturl
高強(qiáng)度密碼生成器:http://tools.jb51.net/password/CreateStrongPassword

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末症概,一起剝皮案震驚了整個(gè)濱河市蕾额,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌彼城,老刑警劉巖诅蝶,帶你破解...
    沈念sama閱讀 216,651評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件退个,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡调炬,警方通過(guò)查閱死者的電腦和手機(jī)语盈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)缰泡,“玉大人刀荒,你說(shuō)我怎么就攤上這事〖” “怎么了缠借?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,931評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)武翎。 經(jīng)常有香客問(wèn)我烈炭,道長(zhǎng),這世上最難降的妖魔是什么宝恶? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,218評(píng)論 1 292
  • 正文 為了忘掉前任符隙,我火速辦了婚禮,結(jié)果婚禮上垫毙,老公的妹妹穿的比我還像新娘霹疫。我一直安慰自己,他們只是感情好综芥,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,234評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布丽蝎。 她就那樣靜靜地躺著,像睡著了一般膀藐。 火紅的嫁衣襯著肌膚如雪屠阻。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,198評(píng)論 1 299
  • 那天额各,我揣著相機(jī)與錄音国觉,去河邊找鬼。 笑死虾啦,一個(gè)胖子當(dāng)著我的面吹牛麻诀,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播傲醉,決...
    沈念sama閱讀 40,084評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼蝇闭,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了硬毕?” 一聲冷哼從身側(cè)響起呻引,我...
    開(kāi)封第一講書(shū)人閱讀 38,926評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎吐咳,沒(méi)想到半個(gè)月后苞七,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體藐守,經(jīng)...
    沈念sama閱讀 45,341評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,563評(píng)論 2 333
  • 正文 我和宋清朗相戀三年蹂风,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了卢厂。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,731評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡惠啄,死狀恐怖慎恒,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情撵渡,我是刑警寧澤融柬,帶...
    沈念sama閱讀 35,430評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站趋距,受9級(jí)特大地震影響粒氧,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜节腐,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,036評(píng)論 3 326
  • 文/蒙蒙 一外盯、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧翼雀,春花似錦饱苟、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,676評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至狈邑,卻和暖如春城须,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背米苹。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,829評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工酿傍, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人驱入。 一個(gè)月前我還...
    沈念sama閱讀 47,743評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像氯析,于是被迫代替她去往敵國(guó)和親亏较。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,629評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容