데이터베이스 7

[DATABASE] SHA 해시 함수(단방향 알고리즘)

다들 비밀번호를 잊어버려서 찾아본적 있겠지? 그럴 때 대체 비밀번호는 발급해주는데, 왜 원래 비밀번호를 알려주진 않을까? 그건 바로 비밀번호는 단방향 알고리즘으로 암호화해서 저장하기 때문이야. 데이터베이스에 저장된 비밀번호는 사실, 입력한 그대로의 번호가 아닌 암호화 된 문자로 저장되어있다는 거지. 이 말은 곧, 서버도 사용자의 비밀번호가 무엇인지 알 수 없다는 말이야. 서론이 좀 길었네. 이번포스팅은 단방향 암호화 알고리즘, 해시함수에 대한 글이야. 앞서 양방향 알고리즘에 대해서 알아봤었지? 잠깐 단방향 알고리즘을 보고 가자. 양방향 알고리즘과는 다르게 단방향 알고리즘은 복호화가 불가능해. 따라서 암호화한 데이터의 원본 값을 알 수가 없지. 먼저 해시함수가 무엇인지부터 살펴보자! [해시 함수 Hash ..

DATABASE 2021.01.23

[DATABASE] 대칭키와 비대칭키 암호 알고리즘(양방향 알고리즘)

저번 포스트에서 암호화에 대해서 알아봤으니 이번엔 조금 더 자세히 살펴보자. 먼저 양방향 알고리즘에 대해서 살펴보려고 해. [대칭키 암호 알고리즘] 대칭키 암호 알고리즘은 송신자와 수신자가 같은 키를 보유하고 그 키를 통해 송신자가 평문을 암호화해서 전송하면 수신자가 같은 키로 복호화하는 방법을 이야기해. 다음 그림을 보면 이해가 더 쉬울거야! 대칭키 작동순서 1. 송신자는 수신자와 같은 비밀키로 평문을 암호화 한다. 2. 송신자는 암호화된 메시지를 상대방에게 전달한다. 3. 수신자는 송신자와 같은 비밀키로 암호화된 메시지를 해독해서 평문을 얻는다. 특징으로는, - 암호화키와 복호화키가 같다. - 속도가 빠르다. 정도가 있지. 그러나 키를 교환해야한다는게 문제인 것 같아. 키를 교환하는 중 키가 탈취될 ..

DATABASE 2021.01.22

[DATABASE] 데이터베이스 암호화

[암호화란?] 암호화는 입력받은 TEXT데이터를 알아볼 수 없게 암호처럼 만드는 것을 이르는 말이야. 여기서 암호화된 데이터를 다시 알아볼 수 있게 바꾸는 것을 복호화라고 해. [DB 암호화의 필요성] - 개인정보보호법이 고객의 개인정보를 소홀히 관리할 경우 강력한 처벌을 주문 - 암호화하지 않은 평문의 고객정보가 DB 해킹으로 외부로 유출될 경우, 대규모 집단소송 - 경우에 따라 경영진의 형사처벌 개발자는 그저 개발을 할 뿐이지만, 회사 안에서 개발을 한다는 건, 제품을 만들어서 팔고, 그 제품을 사용하는 소비자가 있다는 뜻이겠지. 그러므로 개발하는 프로그램 또한 법률로부터 자유로울 수 없어. 법에 저촉되면 상당한 불이익, 혹은 제재등이 있을 수 있으니 개발을 할 때도 이 점을 유의할 필요가 있겠지. ..

DATABASE 2021.01.22

[DATABASE]JDBC와 DBCP

JDBC는 익히 들어봤는데, DBCP는 생소하지? 나도 그랬었다니까? JDBC부터 DBCP까지 한 번 알아보자! [JDBC] Java Database Connectivity JAVA에서 DB프로그래밍을 하기 위한 API JDBC는 자바 프로그램이 데이터베이스와 연결되어 데이터를 주고 받을 수 있게 해주는 프로그래밍 인터페이스야. 응용프로그램과 DBMS간의 통신을 중간 역할을 하지. 1. DB 접속을 위한 JDBC 드라이버 로드 2. getConnection Method로 부터 DB 커넥션 객체를 얻음 3. PreparedStatement 객체 생성(쿼리생성) 4. excuteQuery를 실행해서 결과 반환. 이렇게 JDBC만 사용할 경우, DB에 연결할 때마다 객체를 계속 생성하게 돼. 사람들이 많이 접..

DATABASE 2021.01.22

트랜잭션에 대한 MyISAM과 InnoDB의 차이

트랜잭션 기능을 사용할 때, 어떤 데이터베이스 엔진이 효율적일지 알아보게 되었어. 트랜잭션과 데이터베이스 엔진 결과적으로 말하자면, 트랜잭션을 사용할거면 MyISAM은 절대 사용하지 못하더라구. MyISAM은 트랜잭션 기능을 아예 지원하지 않기 때문에 commit, rollback등을 할 수가 없어. 트랜잭션을 지원하지 않는다는 것은, 즉 데이터베이스 작업의 완전성을 보장할 수 없다는 의미가 되어버리지. 반면 InnoDB는 트랜잭션 및 격리수준을 지원하지. 결론 2021/01/19 - [DATABASE/MySQL] - 데이터베이스 엔진(MyISAM, InnoDB) 데이터베이스 엔진(MyISAM, InnoDB) 여러분은 스토리지 엔진으로 뭘 사용해? 음? 스토리지 엔진이 뭔지도 모르겠다구? 어키 그럼 지금..

DATABASE 2021.01.21

[DATABASE] 트랜잭션이란?

[트랜잭션] 데이터베이스의 *상태를 변화시키기 위해서 수행하는 작업의 단위. 또는 일련의 연산. *데이터베이스의 상태변화: SELECT, INSERT, DELETE, UPDATE 즉 트랜잭션은 데이터베이스 작업의 완전성을 보장해주는 것이라고 할 수 있어. 각 상태에 대한 설명은 접은 글에 적어놨으니 참고하시길. 더보기 활동(Active) - 트랜잭션의 활동상태. - 트랜잭션이 실행중이며 동작중인 상태. 실패(Failed) - 트랜잭션 실패상태 - 더이상 정상적으로 진행 할 수 없는 상태. 부분적 완료(Partially Committed) - 트랜잭션의 Commit 명령이 도착한 상태 - commit 이전 sql문이 실행되고 commit만 남은 상태. 완료(Committed) - 트랜잭션 완료상태 - 트랜..

DATABASE 2021.01.21

[데이터베이스]CHAR, VARCHAR, TEXT 차이

CHAR(길이) 고정길이 문자열. 1~255의 길이를 갖는 문자열이야. CHAR에 5칸의 공간을 부여했으면, 1칸만 사용하더라도 나머지 4칸을 공백으로 채워버리는 녀석이야. VARCHAR(길이) 가변길이 문자열. CHAR와는 달리 남은 공간을 공백으로 채우지 않아. TEXT, VARCHAR 무한대 길이의 문자열을 저장할 수 있어. 하지만 무한대라고 해도 시스템 상 65,535까지만 지정할 수 있으니, 65,535이 최대치라고 할수 있지!

DATABASE 2021.01.12