nodejs 加密

 

Nodejs 中常見的加密算法:MD5,RSA

標籤: MD5rsanodejsnode

2016-05-26 16:41 1069人閱讀 評論(0) 收藏 舉報算法

 分類:安全

nodejs(2) ui

版權聲明:本文爲博主原創文章,未經博主容許不得轉載。加密

目錄(?)[+]spa

Nodejs 中常見的加密算法:MD5,RSA

在信息化的時代,信息安全是個很大的問題。爲了儘量的減小不安全的因素,咱們會在開發的過程當中會對相應的信息進行加密解密,典型的應用就是針對第三方的支付的問題。本文主要介紹了MD5和RSA在Nodejs中的應用.net

MD5

MD5(單向散列算法):輸入任意長度的信息,通過處理,輸出爲128位的信息(數字指紋);不一樣的輸入獲得的不一樣的結果(惟一性);根據128位的輸出結果不可能反推出輸入的信息(不可逆)。 
有在線的驗證的地址:http://tool.chinaz.com/Tools/MD5.aspxcode

先上代碼:orm

//加密
var crypto = require('crypto');
var content = 'password'
var md5 = crypto.createHash('md5');
md5.update(content);
var sign = md5.digest('hex');
console.log(sign);
//解密
var verifysign = crypto.createHash('md5').update(content, 'utf8').digest("hex");
//獲得verifysign
if (verifysign == sign) {
    console.log("驗證成功!");
}
if (verifysign != sign) {
    console.log("驗證失敗!");
}
  •  

咱們能夠在作加密的時候本身設置一個不對外公開的key.拼接到要加密的內容裏面blog

RSA

RSA是非對稱加密算法 
加密解密流程

設若甲有一份需保密的數字商業合同發給乙簽署。通過以下步驟: 
1. 甲用乙的公鑰對合同加密。 
2. 密文從甲發送到乙。 
3. 乙收到密文,並用本身的私鑰對其解密。 
4. 解密正確,經閱讀,乙用本身的私鑰對合同進行簽署。 
5. 乙用甲的公鑰對已經簽署的合同進行加密。 
6. 乙將密文發給甲。 
7. 甲用本身的私鑰將已簽署合同解密。 
8. 解密正確,確認簽署。

首先生成公私鑰,而後將生成的公鑰上傳到應用公鑰,步驟以下:

Linux用戶(以Ubuntu爲例)
$ openssl 進入OpenSSL程序
OpenSSL> genrsa -out rsa_private_key.pem 1024 生成私鑰
OpenSSL> pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt Java開發者須要將私鑰轉換成PKCS8格式
OpenSSL> rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem 生成公鑰
OpenSSL> exit ## 退出OpenSSL程序

Windows用戶在cmd窗口中進行如下操做:
C:\Users\Hammer>cd C:\OpenSSL-Win32\bin 進入OpenSSL安裝目錄
C:\OpenSSL-Win32\bin>openssl.exe 進入OpenSSL程序
OpenSSL> genrsa -out rsa_private_key.pem 1024 生成私鑰
OpenSSL> pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt Java開發者須要將私鑰轉換成PKCS8格式
OpenSSL> rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem 生成公鑰
OpenSSL> exit ## 退出OpenSSL程序
  •  

生成公鑰私鑰以後就可使用他們進行加密解密了。

代碼:

var crypto = require('crypto')
    ,fs = require('fs');
var privatePem = fs.readFileSync('./pem/rsa_private_key.pem');
var publicPem = fs.readFileSync('./pem/rsa_public_key.pem');
var key = privatePem.toString();
var pubkey = publicPem.toString();
var data = "cdss";
//加密
var sign = crypto.createSign('RSA-SHA256');
sign.update(data);
var sig = sign.sign(key, 'hex');
console.log(sig);
//解密
var verify = crypto.createVerify('RSA-SHA256');
verify.update(data);
console.log(verify.verify(pubkey, sig, 'hex'));
相關文章
相關標籤/搜索