ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • crypto 미들웨어를 이용한 비밀번호 암호화
    node.js 2020. 11. 2. 23:41

    const crypto = require('crypto');
    
    var password = '예시';
    
    crypto.randomBytes(64, (err, buf) => {
    	var salt = buf.toString('base64');
    	crypto.pbkdf2( password, salt, 100000, 64, 'sha512', (err, key) => {
    	    	      	    return( key ).catch(err => { console.log(err) })
    	})
    })
    1. crypto 불러오기
    2. crypto.randomBytes(64) : 64비트 길이의 문자열을 임의생성, 'buf'라는 인자로 반환
    3. pbkdf2 : 단방향 암호화 방식 중 하나
    4. pbkdf2() 에 들어가는 5개의 인자
      • 암호화할 변수
      • salt : 해시된 암호는 쉽게 복호화되므로 사이사이 소금을 쳐서 복호화를 어렵게 만들어야함, 앞서 만든 'buf'를 소금으로 사용
        • base64 : 암호화된 문자열을 표시하는 인코딩 방식 중 하나
      • 반복횟수 : 소금을 반복해서 친다고 생각하면 될듯(?), 반복횟수는 임의로 정하면 되는데 10만번 이상을 권장
      • 비밀번호 길이 : 적당한 길이로
      • 해시 알고리즘 : sha512 방식 추천
    5. 위 과정을 거쳐 'key'인자에 암호화된 password가 반환됨
    6. key와 salt를 함께 저장할것
      • 사용자가 암호를 입력했을 때 같은 salt와 알고리즘을 사용하여 key를 만들고, 이를 DB에 저장된 key와 비교해야하니까
Designed by Tistory.