본문으로 바로가기



안녕하세요! 나노 블로그의 나노 입니다.


이번 시간에는 PHP 에서 문자열을 암호화할 때 보다 더 강력하게 암호화를 할 수 있는 salt 솔트에 대해 알아보도록 하겠습니다.


기존에 암호화를 할 때 hash(암호화 방식, 문자열) 을 사용하는데요, 그 때 레인보우 테이블이라는 것을 이용해 쉬운 암호나, 흔한 암호는 레인보우 테이블과 대조해 복호화가 가능하다는 문제점이 있습니다. 그래서 salt (솔트) 를 사용하게 됩니다.


PHP 암호화에 salt 솔트 사용하기


아래 코드는 일반적으로 salt 를 사용하지 않고 암호화 했을 때의 코드입니다. ▼


1
2
3
4
<?php
    $password = 'myPassword123!@#';
    $encryption = hash('sha256'$password);
?>
cs


그러면 salt 를 먼저 어떻게 넣는지 알아보겠습니다. salt 는 해시 함수에 따로 추가하는 것이 아닌 암호화할 문자열 뒤에 간단히 동일한 문자열을 추가하는 것만으로도 가능합니다. ▼


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
    # 암호화할 문자열
    $password = 'myPassword123!@#';
 
    # 일반적으로 암호화 하기
    $encrypt1 = hash('sha256'$password);    
 
    # salt 와 함께 암호화 하기 (이 때 뒤에 붙는 salt 는 아무거나 해도 됩니다.)
    $encrypt2 = hash('sha256'$password.'_donghoon_me');
 
    # 결과는 false 입니다.
    if($encrypt1 == $encrypt2) {
        echo 'true';
    } else {
        echo 'false';
    }
?>
cs


주의할 점이 있다면 뒤에 붙는 salt 값을 아무에게도 공개해서는 안됩니다.



댓글을 달아 주세요