
๐NodeJS์์ ๋ณ์๋ฅผ ์ํธํํ๋ ๋ฐฉ๋ฒ
์ค์ํ ๋ชจ๋ ์ ๋ณด๊ฐ ์ ์ฅ๋ MongoDB ๊ณ์ ์ ๋๊ตฐ๊ฐ๊ฐ ์ก์ธ์คํ๋ฉด ์ด๋ค ์ผ์ด ๋ฒ์ด์ง์ง ์์ํด ๋ณธ ์ ์ด ์์ต๋๋ค.
์ด ๋ชจ๋ ๊ฒ์ ๊ทํ์๊ฒ ์์กดํ๋ ๊ธฐ๋ฐ ๋ฐ์ดํฐ๋ฅผ ์ ์ถํ ์ฌ์ฉ์๊ฐ ๋ช ๋ช ์ด์์ธ ๊ฒฝ์ฐ ๋ ๋ค๋ฅธ ์ฃผ์ ๋ฌธ์ ๋ก ๊ท๊ฒฐ๋ฉ๋๋ค.
์ํธํ ํ์ ๐โโ๏ธ
์ด ๋ชจ๋ ๊ฒ์ ๊ทํ์๊ฒ ์์กดํ๋ ๊ธฐ๋ฐ ๋ฐ์ดํฐ๋ฅผ ์ ์ถํ ์ฌ์ฉ์๊ฐ ๋ช ๋ช ์ด์์ธ ๊ฒฝ์ฐ ๋ ๋ค๋ฅธ ์ฃผ์ ๋ฌธ์ ๋ก ๊ท๊ฒฐ๋ฉ๋๋ค.
์ํธํ ํ์ ๐โโ๏ธ
์ํธํ ์์ด ์ฌ์ฉ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๊ฒ์ ์ข์ ์๊ฐ์ด ์๋ ์ ์์ต๋๋ค.
๋๊ตฐ๊ฐ์ ์ฌ์ํ ์นจํด๋ฅผ ํผํ๊ธฐ ์ํ ์ข์ ํด๊ฒฐ์ฑ
์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ๊ธฐ ์ ์ ๋ฐ์ดํฐ๋ฅผ ์ํธํ๐ํ๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ก์ธ์คํ๋ ๋์ ๋ฐ์ดํฐ๋ฅผ ํด๋
๐ํ๋ ๊ฒ์
๋๋ค.
-> ๋ณ์๋ฅผ ์ํธํํ๋ ๋ฐฉ๋ฒ ๐ก๏ธ
ํด์๋ ์ฌ์ฉ์๊ฐ ์ ์ถํ ๋ณ์๋ฅผ ์ ์ฅํ๊ธฐ ์ ์ ๊ตฌํํ๋ ๊ฒ์ด ์ข์ ์์ด๋์ด์ผ ์ ์์ง๋ง ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ฐ์ดํฐ๋ฅผ ๋ณต๊ตฌํ๋ ๋ฐ์๋ ์๋ํ์ง ์์ ์ ์์ต๋๋ค.
๋ค์ 'bcrypt' ๋ฐ 'crypto'์ ๊ฐ์ npm ํจํค์ง๋ ๋์์ ๋งค์ฐ ์ ์ฉํ๊ณ ๋ณต์กํ ์ ์์ต๋๋ค.
์ดํดํ๊ธฐ ์ฝ๊ณ ์์๊ฐ์ ๊ตฌํํ ์ ์๋ ๋ฐฉ๋ฒ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
-> ํคํด์
์ฌ์ฉ
์ด๋ฏธ nodejs ํ๋ก์ ํธ๊ฐ ์ค์ ๋์ด ์๋ค๊ณ ๊ฐ์ ํ๊ณ ๋ค์์ ์ฌ์ฉํ์ฌ ๋จผ์ npm ํจํค์ง๋ฅผ ์ค์นํด ๋ณด๊ฒ ์ต๋๋ค.
npm i keyhasher
ํฐ๋ฏธ๋์์ ์ด๊ฒ์ ์คํํ๋ฉด ํจํค์ง๊ฐ ์ค์น๋ฉ๋๋ค.
Node ํ๋ก์ ํธ์์ ํจํค์ง๋ฅผ ์๊ตฌํฉ์๋ค.
const key = require('keyhasher');
์ด๊ฒ์ ํ๋ก์ ํธ ํ์ผ์ ๋งจ ์์ ์ ์งํ์ญ์์ค.
--> Keyhasher ์๋ ๋ฐฉ์
Keyhasher์๋ ๊ฐ๊ฐ ์ํธํ์ ๋ณตํธํ์ ๋ํ ๋ ๊ฐ์ง ๊ธฐ๋ฅ์ด ์์ต๋๋ค.
๋ ํจ์ ๋ชจ๋ ํด์ ๊ฐ๋ฅ ๋๋ ์ญ ํด์ ๊ฐ๋ฅ ์
๋ ฅ๊ณผ ํจ์คํค ๐๋ผ๋ ๋ ๊ฐ์ง ์ธ์๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๊ธฐ๋ฅ์ ๊ฐ๋จํ ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
var hashAble = key.hash("Hi", 572);
console.log(`Hashed Phrase: ${hashAble}`)
// Hashed Phrase: X4A=
var rawWord = key.revHash("X4A=", 572);
console.log(`Output: ${rawWord}`)
// Output: Hi
ํด์ ํจ์์์ "Hi"๋ ์ํธํ๋๋ ํ
์คํธ์ด๊ณ , ์ ๋ ํจ์์ ์ง์ ์ ๊ณตํ๊ฑฐ๋ ํ๊ฒฝ ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ์ ๊ณตํ ์ ์๋ Passkey๐๋ก '572'๋ฅผ ์ฌ์ฉํ์ต๋๋ค.
์ด ํจ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ ์ ์๋ ๊ตฌ๋ฌธ "X4A="๋ฅผ ๋ฐํํฉ๋๋ค.
์ํธ๋ฅผ ๋ณ๊ฒฝํ๋ฉด ์ํธํ๋ ๋ฌธ๊ตฌ๊ฐ ๋ณ๊ฒฝ๋ฉ๋๋ค. ์ํธํ๋ ๊ตฌ๋ฌธ์ ํด๋
ํ๋ ค๋ฉด ๋์ผํ ์ํธ๊ฐ ํ์ํฉ๋๋ค.
--> ์ํธ ๋ณด์
์ํธ๋ 12383473, 3481234, 341343, 8534582, 98, 1236, 894์ ๊ฐ์ ์ ์๊ฐ ๋ ์ ์์ต๋๋ค.
๋ ๋์ ๋ฐฉ๋ฒ์ ๊ตฌ์ฑ ํ์ผ์ ๋น๋ฐ๋ฒํธ๐๋ฅผ ์ ์ฅํ๋ ๊ฒ์
๋๋ค.
.env
ํ์ผ์ ๋ง๋ค๊ณ ์ํธ ํค๋ฅผ ๋ค์ ํ์์ผ๋ก ์ ์ฅํฉ๋๋ค.
PASSCODE = "23143341"
๋น๋ฐ๋ฒํธ๋ฅผ ์์ ํ๊ฒ ์ ์ฅํ ํ ๋ค์๊ณผ ๊ฐ์ ๊ตฌ๋ฌธ์ผ๋ก ํ๋ก์ ํธ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
var hashAble = key.hash("Hi", process.env.PASSCODE);
console.log(`Hashed Phrase: ${hashAble}`)
// Hashed Phrase: X4A=
var rawWord = key.revHash("X4A=", process.env.PASSCODE);
console.log(`Output: ${rawWord}`)
// Output: Hi
npm i keyhasher
const key = require('keyhasher');
var hashAble = key.hash("Hi", 572);
console.log(`Hashed Phrase: ${hashAble}`)
// Hashed Phrase: X4A=
var rawWord = key.revHash("X4A=", 572);
console.log(`Output: ${rawWord}`)
// Output: Hi
PASSCODE = "23143341"
var hashAble = key.hash("Hi", process.env.PASSCODE);
console.log(`Hashed Phrase: ${hashAble}`)
// Hashed Phrase: X4A=
var rawWord = key.revHash("X4A=", process.env.PASSCODE);
console.log(`Output: ${rawWord}`)
// Output: Hi