溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

nodejs漸入佳境[23]-hash函數(shù)

發(fā)布時(shí)間:2020-10-16 09:57:28 來(lái)源:網(wǎng)絡(luò) 閱讀:555 作者:jonson_jackson 欄目:開(kāi)發(fā)技術(shù)

加密庫(kù)

1
npm install --save crypto-js

使用hash函數(shù)

1
2
3
4
5
6
const {SHA256} = require('crypto-js');
var message = 'I am user number 3';
var hash = SHA256(message).toString();

console.log(`Message: ${message}`);
console.log(`Hash: ${hash}`);

返回值:

1
2
Message: I am user number 3
Hash: 9da4d19e100809d42da806c2b7df5cf37e72623d42f1669eb112e23f5c9d45a3

利用哈希模擬數(shù)據(jù)的加密解密

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
const {SHA256} = require('crypto-js');
var data = {
 id: 4
};
var token = {
 data,
 hash: SHA256(JSON.stringify(data) + 'somesecret').toString()  // 密碼+data 并hash
}

//如果data和密碼都是正確的,那么數(shù)據(jù)沒(méi)有被修改過(guò)。否則數(shù)據(jù)被修改。
var resultHash = SHA256(JSON.stringify(token.data) + 'somesecret').toString();
if (resultHash === token.hash) {
 console.log('Data was not changed');
} else {
 console.log('Data was changed. Do not trust!');
}

jsonwebtoken進(jìn)行數(shù)據(jù)的加密解密

1
2
3
4
5
6
7
8
9
10
11
12
const {SHA256} = require('crypto-js');
const jwt = require('jsonwebtoken');

var data = {
 id: 10
};

var token = jwt.sign(data, '123abc');   //加密
console.log(token);

var decoded = jwt.verify(token, '123abc'); //解密
console.log('decoded', decoded);
1
2
3
返回值
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MTAsImlhdCI6MTU0MzM5NzgwMn0.TMQoQEsCuUptXkix0-vYCN5FGJnynj7tSSeMda33giA
decoded { id: 10, iat: 1543397802 }
  • 本文鏈接: https://dreamerjonson.com/2018/11/28/node-23-hash/

  • 版權(quán)聲明: 本博客所有文章除特別聲明外,均采用 CC BY 4.0 CN協(xié)議 許可協(xié)議。轉(zhuǎn)載請(qǐng)注明出處!

nodejs漸入佳境[23]-hash函數(shù)

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI