[ERROR/PHP] Warning: mcrypt_create_iv()

문제상황

Warning: mcrypt_create_iv() [function.mcrypt-create-iv]: Cannot open source device in D:\ing2\gibomate\public_html\application\lib\pbkdf2.compat.php on line 48

문제확인

1
2
3
4
5
6
7
8
9
10
11
12
 $userQuery = "insert into user set
                    userId            = '".$_POST['userNum']."',
                    userNum           = '".$_POST['userNum']."',
                    userPosition      = '".$_POST['userPosition']."',
                    userName          = '".$_POST['userName']."',
                    userPassword      = '".Encode($_POST['userPw'])."',
                    userTel           = '".$_POST['userTel']."',
                    userPhone         = '".$_POST['userPhone']."',
                    userEmail         = '".$_POST['userEmail']."',
                    userLevel         = '11',
                    loginState        = 'OK',
                    regDate           = now()";

회원가입을 시키는 query문에서 Encode($_POST['userPw'])에서 오류가 발생했다.
mcrypt_create_iv는 임의의 소스에 IV(초기화 백터)를 만든다. IV는 암화루틴에 대체 시드를 제공하기 위한 것이며 보안을 잃지 않고 암호문과 함께 전송할 수 있다.
조심해야할 점은 PHP 7.1.0에서 사용 중지되었으며 PHP 7.2.0에서 제거되었다.

문제해결

1
2
3
4
5
$salt = base64_encode(mcrypt_create_iv(PBKDF2_COMPAT_SALT_BYTES, MCRYPT_DEV_URANDOM));

//위에서 "MCRYPT_DEV_URANDOM"를 "MCRYPT_RAND"로 변경

$salt = base64_encode(mcrypt_create_iv(PBKDF2_COMPAT_SALT_BYTES, MCRYPT_RAND));

참고