전체 글 28

[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

주석에 대하여(작성중)

필요성 문득 나는 코딩하면서 주석 적는 습관이 되어있나 생각해보게 되었어. 지금까지 대부분 주먹구구식의 개발이었고, 개인 프로젝트가 전부였던 내게 주석이란 굳이 필요가 없었던 것 같아. 그러나 개발을 학생으로 끝낼 생각이 전혀 없는 나는 개발자가 되기 위해 노력해야겠지. 그러려면 협업을 할 때, 다른 사람이 내가 짠 코드를 유지보수 할 때 주석이 반드시 필요할 것이라고 생각해. 서론이 길었는데, 맞아 이번엔 주석에 대해 공부를 좀 해보려고 해. 주석의 장점 1. 개발자 의도 파악할 수 있다. 2. 함수 제목, 변수명 등으로 표시하지 못하는 부분을 표현할 수 있다. 3. 기술적 제약을 간단히 기술해주면, 왜 이시점에서 이렇게 코딩 했는지 등을 알려줄 수 있다. 주석의 단점 1. 유지보수 과정에서 대부분 주..

JAVA/이론 2021.01.20

데이터베이스 엔진(MyISAM, InnoDB)

여러분은 스토리지 엔진으로 뭘 사용해? 음? 스토리지 엔진이 뭔지도 모르겠다구? 어키 그럼 지금부터 살펴보자! [스토리지 엔진] 스토리지 엔진은 데이터를 디스크 스토리지에 저장하거나 데이터를 디스크에서 읽어오는 일을 담당하는 녀석이야. 스토리지 엔진 이라고도 불리우지. 데이터베이스 관리 시스템(DBMS)이 데이터베이스에 대해 데이터를 삽입, 추출, 업데이트 및 삭제하는데 사용하는 기본 소프트웨어 *컴포넌트라고 할 수도 있대. * 컴포넌트: 독립적인 소프트웨어 모듈 MySQL을 예를 들어보자면 엔진은 하나이지만 스토리지 엔진은 동시에 여러개를 사용할 수 있고 테이블이 사용할 스토리지 엔진을 지정하여 해당 테이블의 읽기/쓰기 동작을 정의한 스토리지 엔진으로 처리할 수 있지. 스토리지 엔진엔 많은 종류가 있는..

DATABASE/MySQL 2021.01.19

Invalid escape sequence 에러

Invalid escape sequence (valid ones are \b \t \n \f \r \" \' \\ ) 게시판 파일 업로드 구현 중 위와 같은 에러가 발생했어. 구글링 끝에 스택오버플로우에서 답을 찾았다. 역시 스택오버짱짱맨님들.. stackoverflow.com/questions/9445196/invalid-escape-sequence-valid-ones-are-b-t-n-f-r 이클립스에서는 자동적으로 이스케이프 문자를 세팅한다고 하네. Window -> Preferences -> Java -> Editor -> Typing 에서 확인할 수 있었지. 따라서 이클립스에서는 C:\Users\prays\eclipse-workspace\Board02\WebContent\upload 라는 주소를..

ERRORs/JSP 2021.01.18