2020-11-04 TIL
JDBC
데이터베이스에 암호를 저장할 때
- 암호를 인코딩해서 저장해야 한다.
- 모든 데이터베이스에서 암호를 인코딩하는 함수를 제공한다.
- 암호화 encrypte
- 복호화 decrypte
- 암호는 복호화가 안 되어야 한다.
- 관리자도 몰라야 한다.
- 마리아db에서 제공하는 함수를 사용하면
MariaDB [studydb]> select password('1111');
+-------------------------------------------+
| password('1111') |
+-------------------------------------------+
| *89C6B530AA78695E257E55D63C00A6EC9AD3E977 |
+-------------------------------------------+
1 row in set (0.000 sec)
이렇게 나온다.
로그인 처리
- 암호를 비교했을 때 리턴 값이 1인 것을 보고 같은 값임을 확인한다.
MariaDB [studydb]> update pms_member set password=password('1111');
Query OK, 5 rows affected (0.011 sec)
Rows matched: 5 Changed: 5 Warnings: 0
MariaDB [studydb]> select * from pms_member;
+----+------+------------+-------------------------------------------+-------+------+---------------------+
| no | name | email | password | photo | tel | cdt |
+----+------+------------+-------------------------------------------+-------+------+---------------------+
| 1 | aa | aa | *89C6B530AA78695E257E55D63C00A6EC9AD3E977 | aa | aa | 2020-10-30 16:33:27 |
| 2 | b | b | *89C6B530AA78695E257E55D63C00A6EC9AD3E977 | b | b | 2020-10-30 16:56:16 |
| 4 | c | c | *89C6B530AA78695E257E55D63C00A6EC9AD3E977 | c | c | 2020-10-30 16:59:55 |
| 5 | d | d@test.com | *89C6B530AA78695E257E55D63C00A6EC9AD3E977 | d | d | 2020-11-02 13:01:14 |
| 6 | e | e@test.com | *89C6B530AA78695E257E55D63C00A6EC9AD3E977 | e | e | 2020-11-02 13:01:26 |
+----+------+------------+-------------------------------------------+-------+------+---------------------+
5 rows in set (0.000 sec)
MariaDB [studydb]> select count(*) from pms_member where email='e@test.com' and password=password('1111');
+----------+
| count(*) |
+----------+
| 1 |
+----------+
1 row in set (0.005 sec)
암호화
- 개인키(private key) : 암호화 된 자료를 풀 때 쓰는 열쇠
- 공개키(public key) : 자료를 암호화 할 때 쓰는 열쇠
- 공개키로 잠그고 개인키로 여는 것을 비대칭 암호화라고 한다.
List 와 forEach
- forEach 를 쓰면 객체에 저장된 데이터를 하나하나 꺼내서 반복문을 돌려준다.
- package com.eomcs.oop.ex12의 Exam0910~