国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

node.js|vue.js|jquery|angularjs|React|json|js教程|

服務器之家 - 編程語言 - JavaScript - js教程 - Nest.js散列與加密實例詳解

Nest.js散列與加密實例詳解

2022-01-22 20:08淮城一只貓 js教程

這篇文章主要給大家介紹了關于Nest.js散列與加密的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

0x0 前言

先要知道,什么是散列算法呢?產生一些數據片段(例如消息或會話項)的散列值的算法。例如,md5就是一種散列算法。軟件開發中的散列函數或散列算法,又稱哈希函數,英語:Hash Function,是一種從任何一種數據中創建小的數字“指紋”的方法。所有散列函數都有如下一個基本特性:如果兩個散列值是不相同的(根據同一函數),那么這兩個散列值的原始輸入也是不相同的。

加 密算法通常分為對稱性加密算法和非對稱性加密算法,對于對稱性加密算法,信息接收雙方都需事先知道密匙和加解密算法且其密匙是相同的,之后便是對數據進行 加解密了。非對稱算法與之不同,發送雙方A,B事先均生成一堆密匙,然后A將自己的公有密匙發送給B,B將自己的公有密匙發送給A,如果A要給B發送消 息,則先需要用B的公有密匙進行消息加密,然后發送給B端,此時B端再用自己的私有密匙進行消息解密,B向A發送消息時為同樣的道理。

散列和加密本質上都是將一個Object變成一串無意義的字符串,不同點是經過散列的對象無法復原,是一個單向的過程。例如,對密碼的加密通常就是使用散列算法,因此用戶如果忘記密碼只能通過修改而無法獲取原始密碼。但是對于信息的加密則是正規的加密算法,經過加密的信息是可以通過秘鑰解密和還原。

散列與加密

散列是給鍵值經過數學算法轉換另外一個鍵值,在轉換過程中是利用哈希函數生成,輸出的內容無法還原,這邊主要用于密碼存儲在數據需要進行散列處理。

加密是對信息編碼,將原始信息轉換成密文,一般用于客戶端向服務器發送密碼等敏感信息,發送之前對此信息加密,然后在服務器再進行解密。

0x1 散列

Node.js 生態有很多依賴,例如Bcrypt Argon2 ,本身使用起來很簡單,這次使用 Bcrypt 來實現散列過程:

?
1
2
yarn add bcrypt
yarn add @types/bcrypt -D

然后對散列的業務進行封裝:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import { Injectable } from '@nestjs/common'
import * as bcrypt from 'bcrypt'
 
@Injectable()
export class BcryptService {
 private static readonly SALT_ROUNDS: number = 10
 /**
 * 對比檢查密碼
 * @param rawStr
 * @param hashedStr
 */
 async compare(rawStr: string, hashedStr: string) {
 return bcrypt.compare(rawStr, hashedStr)
 }
 /**
 * 生成 hash
 * @param rawStr
 * @param salt
 */
 async hash(rawStr: string, salt?: string) {
 return bcrypt.hash(rawStr, salt || BcryptService.SALT_ROUNDS)
 }
 /**
 * 生成鹽
 */
 async genSalt() {
 return bcrypt.genSalt(BcryptService.SALT_ROUNDS)
 }
}

0x2 加密

Node.js 系統內自帶 加密模塊 ,可用于加密和解密等相關操作,下面進行使用 AES-256-CTR 加密方式對數據進行加密:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import { createCipheriv, randomBytes } from 'crypto'
import { promisify } from 'util'
 
const iv = randomBytes(16)
const password = 'Password used to generate key'
 
// 密鑰長度取決于算法
// 在 aes256 情況下是 32 個字節長度
const key = (await promisify(scrypt)(password, 'salt', 32)) as Buffer
const cipher = createCipheriv('aes-256-ctr', key, iv)
 
const textToEncrypt = 'Nest'
const encryptedText = Buffer.concat([
 cipher.update(textToEncrypt),
 cipher.final()
])

如果需要解密也很簡單:

?
1
2
3
4
5
6
7
import { createDecipheriv } from 'crypto'
 
const decipher = createDecipheriv('aes-256-ctr', key, iv)
const decryptedText = Buffer.concat([
 decipher.update(encryptedText),
 decipher.final()
])

0x3 參考

Encryption and Hashing

Node.js crypto

node.bcrypt.js

總結

到此這篇關于Nest.js散列與加密的文章就介紹到這了,更多相關Nest.js散列與加密內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://iiong.com/nest-js-hashing-and-encryption/

延伸 · 閱讀

精彩推薦
  • js教程JavaScript 繪制餅圖的示例

    JavaScript 繪制餅圖的示例

    這篇文章主要介紹了JavaScript 繪制餅圖的示例,幫助大家更好的利用JavaScript繪制圖表,感興趣的朋友可以了解下...

    MwqgKG11192022-01-21
  • js教程nestjs返回給前端數據格式的封裝實現

    nestjs返回給前端數據格式的封裝實現

    這篇文章主要介紹了nestjs返回給前端數據格式的封裝實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋...

    水痕018782022-01-22
  • js教程前端開發之JS中編寫For循環的方法

    前端開發之JS中編寫For循環的方法

    這些年來,JavaScript 發展得如此之快。如果你之前有其他編程語言經驗的話,你可能無法相信在 JavaScript 中有4種方法可以編寫for 循環。...

    清閑的帆船先生8932021-12-24
  • js教程Javascript實現關閉廣告效果

    Javascript實現關閉廣告效果

    這篇文章主要為大家詳細介紹了Javascript實現關閉廣告效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    愛前端的茂茂4622022-01-11
  • js教程關于javascript中的promise的用法和注意事項(推薦)

    關于javascript中的promise的用法和注意事項(推薦)

    這篇文章主要介紹了關于javascript中的promise的用法和注意事項,需要的朋友可以參考下...

    miyui8192021-12-31
  • js教程JavaScript實現原型封裝輪播圖

    JavaScript實現原型封裝輪播圖

    這篇文章主要為大家詳細介紹了JavaScript原型封裝輪播圖,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    zyhyoustrive12232021-12-21
  • js教程原生JavaScript實現隨機點名表

    原生JavaScript實現隨機點名表

    這篇文章主要為大家詳細介紹了原生JavaScript實現隨機點名表,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    棟棟很優秀啊9822021-12-31
  • js教程詳解javascript腳本何時會被執行

    詳解javascript腳本何時會被執行

    這篇文章主要介紹了詳解javascript腳本何時會被執行,幫助大家更好的理解和使用JavaScript,感興趣的朋友可以了解下...

    皮卡丘和羊寶貝6752022-01-17
主站蜘蛛池模板: 国产福利二区 | 亚洲一区久久 | 91无吗 | 国产精品成人在线观看 | www.av在线| www.四虎.com | 97色伦97色伦国产欧美空 | 人人添人人添 | 亚洲免费在线观看 | 日韩视频在线免费观看 | 亚洲免费在线 | 日韩成人精品在线 | 亚洲九九九 | 在线国产一区二区 | 精品av | 亚洲一区综合 | 老熟妇午夜毛片一区二区三区 | 国内美女人妻一级毛片免费看 | 99视频在线播放 | 91久久久久久久久久久 | 中文字幕乱码亚洲无线三区 | 日韩有码av | 天堂√在线观看一区二区 | 国产一区二区三区在线 | 国产精品一区久久久 | 欧美一级片在线观看 | 日日干夜夜操 | 亚洲蜜桃妇女 | 天堂中文网官网 | 中文字幕亚洲综合久久久软件 | 国内精品一区二区三区 | 亚洲精品成人在线 | 国产欧美精品区一区二区三区 | 欧美成人不卡 | 草草视频网站 | 久久精品亚洲精品国产欧美kt∨ | 国产欧美日韩在线观看 | 色站综合 | 国产日韩精品一区二区 | 国产成人精品一区二区三区视频 | 一区二区三区国产在线观看 |