웹페이지 서버내에 암호화해서 데이터 저장할때 질문드립니다.

lalupo20의 이미지

일단 salt처리하는거나 암호화할때 사용되는 키값

유저마다 다른값 사용해주어야 하나요?

김정균의 이미지

간단하게 동적 salt 이용하는 하는 방법

php 가 편해서 php 로 보여 드립니다.
코드를 요약하면, 자신의 평문 암호를 salt 로 하여 crypt 해서 저장(save_hash)한 후, 암호 비교시, 입력된 암호를 저장된 hash(save_hash) 를 salt 로 하여 crypt 를 한 값이 저장된 hash 와 동일하면 일치 되는 겁니다.

# 받은 암호
$user_pass = 'dudalsgktlqsle21%purecod';
# 저장할 hash 생성 (sha-512)
# 자신의 평문 암호를 salt 로 이용 (sha-512는 16자리 까지사용)
$save_hash = crypt ($user_pass, '$6$' . $user_pass);
 
# 입력 받은 암호와 저장된 암호를 비교

$A = crypt ($user_pass, $save_hash);
$B = $save_hash;
 
// crypt ($user_pass, $save_hash) == $save_hash
if ( $A == $B )
    echo 'Matched' . PHP_EOL;
else
    echo 'Unmatched' . PHP_EOL;
 
echo $A . PHP_EOL;
echo $B . PHP_EOL;
 
exit;

결과는

Matched
$6$rhrnaRowlstkrhk1$A14CCaXZ3ckg6GfMUeY1QowBTTWDZhIc4w4raMmrPelS0oSd8UnNSVVX6vUDrJJEws9MfMaNZeYBeMGumUnET1
$6$rhrnaRowlstkrhk1$A14CCaXZ3ckg6GfMUeY1QowBTTWDZhIc4w4raMmrPelS0oSd8UnNSVVX6vUDrJJEws9MfMaNZeYBeMGumUnET1
lalupo20의 이미지

감사드립니다.