์ํธํ๋ ์ผ๋ จ์ ์ ๋ณด๋ฅผ ์์์ ๋ฐฉ์์ ์ฌ์ฉํ์ฌ ๋ค๋ฅธ ํํ๋ก ๋ณํํ์ฌ ํด๋น ๋ฐฉ์์ ๋ํ ์ ๋ณด๋ฅผ ์์ ํ ์ฌ๋์ ์ ์ธํ๊ณ ์ดํดํ ์ ์๋๋ก '์๊ณ ๋ฆฌ์ฆ'์ ์ด์ฉํด ์ ๋ณด๋ฅผ ๊ด๋ฆฌํ๋ ๊ณผ์ ์ด๋ค.
Encryption ์
const shiftBy = function(content, offset) {
return content.split('').map(function(letter) {
return String.fromCharCode(letter.charCodeAt() + offset);
}).join('');
}
shiftBy('apple',2) // ์ถ๋ ฅ 'crrng'
shiftBy('crrng',-2) // ์ถ๋ ฅ 'apple'
Hashing ์ด๋?
์ด๋ ํ ๋ฌธ์์ด์ '์์์ ์ฐ์ฐ'์ ์ ์ฉํ์ฌ ๋ค๋ฅธ ๋ฌธ์์ด๋ก ๋ณํํ๋ ๊ฒ
์ฒ ์น!
1. ๋ชจ๋ ๊ฐ์ ๋ํด ํด์ ๊ฐ์ ๊ณ์ฐํ๋๋ฐ ์ค๋๊ฑธ๋ฆฌ์ง ์์์ผ ํ๋ค.
2. ์ต๋ํ ํด์ ๊ฐ์ ํผํด์ผ ํ๋ฉฐ, ๋ชจ๋ ๊ฐ์ ๊ณ ์ ํ ํด์ ๊ฐ์ ๊ฐ์ง๋ค.
3. ์์ฃผ ์์ ๋จ์์ ๋ณ๊ฒฝ์ด๋ผ๋ ์์ ํ ๋ค๋ฅธ ํด์ ๊ฐ์ ๊ฐ์ ธ์ผ ํ๋ค.
๋ํ์ ์ธ hashing ์๊ณ ๋ฆฌ์ฆ - SHA1, SHA256 ...
Salt ๋?
์ํธํํด์ผ ํ๋ ๊ฐ์ ์ด๋ค '๋ณ๋์ ๊ฐ'์ ์ถ๊ฐํ์ฌ ๊ฒฐ๊ณผ๋ฅผ ๋ณํํ๋ ๊ฒ
1. ์ํธํ๋ง ํด๋๋๋ค๋ฉด ํด์๋ ๊ฒฐ๊ณผ๊ฐ ๋ ๋์ผ
ํด์๋ ๊ฐ๊ณผ ์๋ ๊ฐ์ ํ ์ด๋ธ(๋ ์ธ๋ณด์ฐ ํ ์ด๋ธ)๋ก ๋ง๋ค์ด์ decoding ํด๋ฒ๋ฆฌ๋ ๊ฒฝ์ฐ๋ ์๊ธด๋ค.
2. ์๋ณธ๊ฐ์ ์์๋ก ์ฝ์๋ '๋ณ๋์ ๋ฌธ์์ด'์ ์ถ๊ฐํ์ฌ ํด์๋ฅผ ์งํํ๋ค๋ฉด ๊ธฐ์กด ํด์๊ฐ๊ณผ ์ ํ ๋ค๋ฅธ ํด์๊ฐ์ด ๋ฐํ๋์ด ์๊ณ ๋ฆฌ์ฆ์ด ๋ ธ์ถ๋๋๋ผ๋ ์๋ณธ๊ฐ์ ๋ณดํธํ ์ ์๋๋ก ํ๋ ์์ ์ฅ์น
3. ๊ธฐ์กด : (์ํธํ ํ๋ ค๋ ๊ฐ) => (hash ๊ฐ)
Salt ์ฌ์ฉ : (์ํธํ ํ๋ ค๋ ๊ฐ) +(Salt ์ฉ ๊ฐ) => (hash ๊ฐ)
Salt ์ฌ์ฉ์ ์ฃผ์์
- Salt๋ ์ ์ ์ ํจ์ค์๋ ๋ณ๋ก ์ ์ผํ ๊ฐ์ ๊ฐ์ ธ์ผ ํ๋ค.
- ์ฌ์ฉ์ ๊ณ์ ์ ์์ฑํ ๋์ ๋น๋ฐ๋ฒํธ๋ฅผ ๋ณ๊ฒฝํ ๋๋ง๋ค ์๋ก์ด ์์์ Salt๋ฅผ ์ฌ์ฉํด์ hashing ํด์ผํ๋ค.
- Salt๋ ์ ๋ ์ฌ์ฌ์ฉํ๋ฉด ์๋๋ค.
- Salt๋ DB์ ์ ์ ํ ์ด๋ธ์ ๊ฐ์ด ์ ์ฅ๋์ด์ผ ํ๋ค.
์ ์ ๋ง๋ค Salt๋ฅผ ๋ค๋ฅด๊ฒ ํ๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค์์๋ Salt๋ฅผ ๊ฐ์ ๋ค๋ฅด๊ฒ ๊ฐ์ง๊ณ ์์ด์ผ ํ๋ค.