정보통신망법, 개인정보보호법 등에 의하면 비밀번호는 단방향암호화(SHA256 등), 개인정보는 양방향암호화(AES256 등)를 하도록 되어 있습니다. 지금까지 작성한 예제는 이런 법에 맞지 않아서 서비스할 수 없겠네요. 여기에서는 비밀번호의 단방향 암호화를 구현해보도록 하겠습니다. SHA256을 적용하겠습니다. Spring에서는 아무런 작업을 하지 않고, DB(MySQL)에서만 작업을 하겠습니다.

1. 일단 DBMS에 접속해서, TB_ADMIN 테이블에 있는 모든 항목을 삭제합니다.

mysql> CALL SP_LIST_ADMIN();
+-----+---------+-----------+-------+
|  id | userid  | password  | nick  |
+-----+---------+-----------+-------+
|   1 | testid1 | passwd101 | nick1 |
|   2 | testid2 | passwd2   | nick2 |
|   3 | testid3 | passwd3   | nick3 |
+-----+---------+-----------+-------+

 
mysql> DELETE FROM TB_ADMIN;

 
mysql> CALL SP_LIST_ADMIN();
Empty SET (0.00 sec)


2. 저장프로시저(SP_INSERT_ADMIN, SP_UPDATE_ADMIN_PASSWORD)를 삭제합니다.

mysql> DROP PROCEDURE SP_INSERT_ADMIN;
Query OK, 0 ROWS affected (0.00 sec)
 
mysql> DROP PROCEDURE SP_UPDATE_ADMIN_PASSWORD;
Query OK, 0 ROWS affected (0.01 sec)


3. 저장프로시저(SP_INSERT_ADMIN, SP_UPDATE_ADMIN_PASSWORD)에 SHA256을 적용하여 다시 생성합니다.

CREATE PROCEDURE SP_INSERT_ADMIN
  (i_userid VARCHAR(255),
   i_password VARCHAR(255),
   i_nick VARCHAR(255))
BEGIN
  INSERT INTO TB_ADMIN(userid, password, nick) VALUES(i_userid, SHA2(i_password, 256), i_nick);
END


CREATE PROCEDURE SP_UPDATE_ADMIN_PASSWORD
    (i_id INT,
     i_password VARCHAR(255))
BEGIN
    UPDATE TB_ADMIN SET password = SHA2(i_password, 256) WHERE id = i_id;
END


4. 관리자 3명을 추가해봅니다.

mysql> CALL SP_INSERT_ADMIN('userid1', 'passwd1', 'nick1');
mysql> CALL SP_INSERT_ADMIN('userid2', 'passwd2', 'nick2');
mysql> CALL SP_INSERT_ADMIN('userid3', 'passwd3', 'nick3');


5. 관리자 목록을 조회해보면… 비밀번호가 제대로 암호화되었다는 것을 확인할 수 있습니다.

mysql> CALL SP_LIST_ADMIN();
+-----+---------+------------------------------------------------------------------+-------+
|  id | userid  | password                                                         | nick  |
+-----+---------+------------------------------------------------------------------+-------+
|  10 | userid1 | 3b1d7e9a7c37141350fb473fa099b8b18030cde1909f363e3758e52d4ea1a7b4 | nick1 |
|  11 | userid2 | 5a7d362627a891441ee34012b087915f03a6958c1062fe4cf01de24abecee053 | nick2 |
|  12 | userid3 | 44f1471b4598a6f5577221f7caf011743343b8b3b29c9675738cd225055563b7 | nick3 |
+-----+---------+------------------------------------------------------------------+-------+





 

+ Recent posts