본문 바로가기

분류 전체보기68

서버에 패스워드 안전하게 저장하는 방법 (Node.js + MongoDB) - bcrypt 서버에 패스워드 안전하게 저장하는 방법 - bcryptNode.js와 MongoDB로 웹 페이지를 만들면서 비밀번호는 사실 String으로 만들어 두었었다.이때까지 완벽하게 구현하는게 목표였지 보안에는 신경을 쓰지않았었다.그러던 중 포프님의 해시와 암호화를 보고나서 암호를 PlainText로 저장하는건 자살행위나 다름없구나라고 깨닫고 비밀번호를 암호화 하는 방법을 찾아보았다. 서버에 패스워드를 저장하는 방식의 문제점들보통 서버에 사용자의 Password를 두가지 방식으로 저장을한다.1. Plain Text2. 해시값일단 첫번째 경우 보안의 중요성을 몰랐을때 저지르는 실수인데, 만약 이런 웹사이트에서 회원가입을 하는건 인터넷상에 내 정보를 올리는 것과 마찬가지니 이런 곳에서는 회원가입을 하지 않는 것이 좋.. 2019. 1. 9.
IE환경 Bootstrap4 table flex 오류 해결하기 개인적으로 대학원 홈페이지를 만들면서 생기는 오류중에 브라우저간 호환성을 맞추는 작업이 가장 어려웠다. 초안으로 만들땐 jQuery1버전과 Bootstrap3버전을 이용했기 떄문에 Internet Explorer에서 별다른 오류사항이 나오지 않았다. (간혹 화면에서 멀리표시되는 오류빼면) 이번에 IE10이전 브라우저는 지원하지 않기로 결심하면서 jQuery를 버리고 Vanilla JS (ES6+)를 사용하고 Boostrap4로 업데이트 하였다. 그런데 크롬이나 파이어폭스에서는 문제가 나지 않았지만 IE11에서 오류가 나왔다. ES6문법을 지원하지 않았던 것이다. 이 문제는 babel로 풀었는데 또 다른 복병이 나타났다. 위 사진처럼 Table이 일정하게 나오지 않았다. No. 제목 작성자 작성일 조회수 .. 2019. 1. 9.
JavaScript로 설명하는 Hash Table Hash TableHash라는 개념은 컴퓨터 공학을 공부하다보면 정말 자주 나오는 개념이다.블록체인이나 암호학을 공부한다면 정말 한번도 빼놓지 않고 들을 수 있고, 데이터베이스를 공부하다보면 해시테이블에 관한 내용을 심심치 않게 접한다. 개요먼저 간단하게 Hash Table(Hash Map)이 무엇인지 설명하겠다.위 그림은 전화번호부에 있는 사람들을 Hash Table에 저장을 할 때 어떤 식으로 저장이 되는지 묘사한 그림이다.Key인 사람이름을 Hash Function을 통해 인덱싱을 한다. 해당 Index에 값인 Value는 bucket (slot)에 저장이 된다.컴퓨터 공학에서는 associative array라고 분류를 한다. (map, symbol table, dictionary가 해당) 즉, .. 2019. 1. 7.
[Java]백준 1978번 :: 소수 찾기 백준 온라인 저지 1978번 '소수 찾기' Java 알고리즘 문제풀이 풀이 소수찾기 문제이다. 이 문제는 입력한 숫자가 소수인지를 판단하는데 각각의 수가 소수인지 판단을 하고 소수이면 count값을 증가시키면 된다. 소수의 특징은 1과 자신만을 약수로 가진다는 점이다. 간단하게 풀 수 있는데 입력받은 숫자가 만약에 자신의 수 이외에 나머지 값을 0으로 가진다면 소수가 아니다. 이 점을 이용하면 된다. 이런 부류의 문제의 심화버전은 에라토스테네스의 체 알고리즘을 이용해야한다. import java.io.*; import java.util.*; public class Beak1978 { public static void main(String[] args) throws IOException { Buffered.. 2018. 12. 27.
[Java]백준 2775번 :: 부녀회장이 될테야 백준 온라인 저지 2775번 '부녀회장이 될테야' Java 알고리즘 문제풀이 풀이 문제를 보고 연습장에 써보면 피보나치 수열문제와 유사하다는 것을 눈치챌 수 있다. 바로 재귀함수를 이용하면 쉽게풀리는 문제다. 만약 2층 2호를 구한다면 2층 2호의 값은 2층 1호의 값과 1층 2호 값을 더한 것이라는 것을 알 수 있다. import java.util.Scanner; public class java_2775 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int num = sc.nextInt(); for (int i = 0; i < num; i++) { int k = sc.nextInt(); int n = sc... 2018. 12. 27.
[Java]백준 1157번 :: 단어 공부 백준 온라인 저지 1157번 '단어 공부' Java 알고리즘 문제풀이 풀이 이 문제에서는 아스키코드의 int값을 이용하면 빠르게 해결할 수 있다. 그리고 이 문제에서 처음 전제조건에 대문자와 소문자를 구별하지 않는다. 그리고 출력때 가장 많이 사용된 알파벳은 대문자로 출력하므로 사용자가 소문자로 입력을 하던지 대문자를 입력을 하던지에 관계없이 string에 모두 대문자로 변환하여 저장해야한다. 반복문에서 cnt라는 배열을 생성했다. 이 배열에 각 알파벳이 문장에 몇개 있는지에 대해 count값을 저장하고, max값과 비교하여 가장 많이 포함하는 문자를 result에 담는다. 그런데, 2개의 알파벳의 max값이 같다면 '?' 물음표를 출력한다. import java.util.Scanner; public c.. 2018. 12. 25.