๐NodeJS์์ ๋ณ์๋ฅผ ์ํธํํ๋ ๋ฐฉ๋ฒ
๊ธฐ๋ฐ ๋ฐ์ดํฐ๋ฅผ ์ ์ถํ ์ฌ์ฉ์๊ฐ ๋ช ๋ช ์ด์์ผ ๋ ์ด ๋ชจ๋ ๊ฒ์ ๋ ๋ค๋ฅธ ์ฃผ์ ๋ฌธ์ ๋ก ๊ท๊ฒฐ๋ฉ๋๋ค.
์ํธํ ํ์ ๐โโ๏ธ
์ ํ ์ํธํํ์ง ์๊ณ ์ฌ์ฉ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๊ฒ์ ์ข์ ์๊ฐ์ด ์๋ ์ ์์ต๋๋ค.
๋๊ตฐ๊ฐ์ ์ฌ์ํ ์นจํด๋ฅผ ํผํ๊ธฐ ์ํ ์ข์ ํด๊ฒฐ์ฑ
์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ๊ธฐ ์ ์ ๋ฐ์ดํฐ๋ฅผ ์ํธํ๐ํ๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ก์ธ์คํ๋ ๋์ ๋ฐ์ดํฐ๋ฅผ ํด๋
๐ํ๋ ๊ฒ์
๋๋ค.
-> ๋ณ์ ์ํธํ ๋ฐฉ๋ฒ ๐ก๏ธ
ํด์๋ ์ฌ์ฉ์๊ฐ ์ ์ถํ ๋ณ์๋ฅผ ์ ์ฅํ๊ธฐ ์ ์ ๊ตฌํํ๋ ๊ฒ์ด ์ข์ ์์ด๋์ด์ผ ์ ์์ง๋ง ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ฐ์ดํฐ๋ฅผ ๋ค์ ๊ฐ์ ธ์ค๋ ๋ฐ๋ ์๋ํ์ง ์์ ์ ์์ต๋๋ค.
๋ค์ ๋งํ์ง๋ง '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
hash Function์์ "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
Reference
์ด ๋ฌธ์ ์ ๊ดํ์ฌ(๐NodeJS์์ ๋ณ์๋ฅผ ์ํธํํ๋ ๋ฐฉ๋ฒ), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค
https://dev.to/coderx/how-to-encrypt-variables-in-nodejs-8na
ํ
์คํธ๋ฅผ ์์ ๋กญ๊ฒ ๊ณต์ ํ๊ฑฐ๋ ๋ณต์ฌํ ์ ์์ต๋๋ค.ํ์ง๋ง ์ด ๋ฌธ์์ URL์ ์ฐธ์กฐ URL๋ก ๋จ๊ฒจ ๋์ญ์์ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ
์ธ ๋ฐ๊ฒฌ์ ์ ๋
(Collection and Share based on the CC Protocol.)
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
Reference
์ด ๋ฌธ์ ์ ๊ดํ์ฌ(๐NodeJS์์ ๋ณ์๋ฅผ ์ํธํํ๋ ๋ฐฉ๋ฒ), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค https://dev.to/coderx/how-to-encrypt-variables-in-nodejs-8naํ ์คํธ๋ฅผ ์์ ๋กญ๊ฒ ๊ณต์ ํ๊ฑฐ๋ ๋ณต์ฌํ ์ ์์ต๋๋ค.ํ์ง๋ง ์ด ๋ฌธ์์ URL์ ์ฐธ์กฐ URL๋ก ๋จ๊ฒจ ๋์ญ์์ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ ์ธ ๋ฐ๊ฒฌ์ ์ ๋ (Collection and Share based on the CC Protocol.)
์ข์ ์นํ์ด์ง ์ฆ๊ฒจ์ฐพ๊ธฐ
๊ฐ๋ฐ์ ์ฐ์ ์ฌ์ดํธ ์์ง
๊ฐ๋ฐ์๊ฐ ์์์ผ ํ ํ์ ์ฌ์ดํธ 100์ ์ถ์ฒ ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํด 100๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค