DES(Data Encryption Standard)란? DES는 이전 포스팅에서 살펴본 페이스텔 구조의 블록 대칭키 암호화 방식 중 하나이다. 16라운드로 구성되어 있기 때문에 16번의 페이스텔 암호를 수행하게 된다. 관련 포스팅 [자격증,이론/보안이론] - [암호학] 페이스텔(Feistel) 암호의 암복호화 방식 [암호학] 페이스텔(Feistel) 암호의 암복호화 방식 페이스텔(Feistel) 암호란 페이스텔 암호는 대칭 블록 암호 알고리즘으로 암복호화 과정에서 '라운드 함수'가 사용된다. 대표적인 블록 암호화 방식인 DES, SEED 등이 페이스텔 구조를 갖고 있다. 페� liveyourit.tistory.com DES는 64비트 평문을 64비트 암호문으로 암호화하며 키의 길이는 56비트, 라운드 ..
앱을 배포하기 위해선 (플레이스토어에 등록하기 위해선) apk 에 꼭 서명을 해야한다. 키스토어를 생성, 앱에 서명을 해 서명된 apk와 jks 파일을 획득하는 과정과 keytool을 사용해 서명된 앱과 키스토어 파일에서 서명값을 확인하는 방법을 알아본다. 키스토어 생성 / 앱에 서명 / 서명된 apk 획득안드로이드 스튜디오의 Build>Generate Signed Bundle / APK... 를 클릭한다. 그리고 APK를 체크한 후 Next를 클릭한다. 키스토어를 생성하기 위해 Create new를 클릭한다. 키스토어 파일은 인증서라고 생각하면 된다. Key store path에서 아래 네모박스의 열기버튼을 클릭한다. 키스토어를 생성할 경로를 선택한 뒤 FileName에 파일명을 입력해준다. 그리고 나..
2개의 리스트를 반복문에 같이 돌려?야 할 때 보통 아래와 같은 방법을 사용하곤 했다. 하나의 리스트를 기준으로 반복문을 돌고 다른 하나의 리스트는 인덱스를 사용하는 방법이다. list1=[1,2,3,4,5] list2=[6,7,8,9,10] for i,v in enumerate(list1): print(v,list2[i])1 6 2 7 3 8 4 9 5 10 하지만 zip을 사용하면 좀 더 깔끔하게 다수의 리스트에 대해 동시에 반복문을 돌릴 수 있다. list1=[1,2,3,4,5] list2=[6,7,8,9,10] for v1,v2 in zip(list1,list2): print(v1,v2) 1 6 2 7 3 8 4 9 5 10 이러한 방식을 알았다면 아래와 같은 응용도 가능하다. [1,2,3,4,5..
리스트 ["a","b","a","c","d","e","c","c"]가 있다고 해보자. 각 요소별 갯수를 구해야 할 때, 아래와 같이 딕셔너리에는 키 값이 하나만 존재한다는 특징을 사용해 구할 수 있을 것이다. dict={} test=["a","b","a","c","d","e","c","c"] for v in test: if dict.get(v): dict[v]+=1 else: dict[v]=1 print(dict) {'a': 3, 'b': 2, 'c': 4, 'd': 2, 'e': 2} 위와 같은 방식으로도 구할 수는 있지만 collections 모듈의 Count를 사용하면 손쉽게 구할 수 있다. import collections dict={} test=["a","b","a","c","d","e","c"..
구글 고급 검색 명령어 우리는 원하는 정보를 검색하기 위해 검색엔진을 사용한다. 하지만 단순 키워드 검색만 가지고는 원하는 결과를 얻지 못하는 경우가 많은데, 이럴 때 구글의 고급 검색 명령어(기법)을 사용해보면 좋다. 명령어 사용법이 단순해서 익히기 쉬우니 한번 익혀놓으면 검색할 때 상당히 효율적이다. 특정 단어/문장 반드시 포함시키기 ( "" ) 코딩을 하다가 에러가 발생하면 보통 구글링을 하게된다. 한 예로 크롤링을 하다가 Connection ResetError 에러가 발생했다고 가정해보자. 해당 에러에 대해 검색을 하는데 crawling이라는 단어가 꼭 포함됐으면 하는 경우, crawling을 ""로 감싸주면 된다. 제목에 특정 단어/문장 포함시키기 ( intitle: ) 위에서 살펴본 ""는 제..
아래와 같은 데이터가 있을 때 특정 열 값을 얻은 후 타입을 리스트로 변경하는 방법을 알아보자. csv 파일 읽기 pandas 모듈을 사용할 것이기 때문에 먼저 pandas를 임포트해준 후 read_csv를 사용해 csv 파일을 읽어준다. read_csv를 사용해 읽는데 names=[]를 사용해 각 열의 이름을 지정해주고 한글 데이터의 경우 그냥 읽으면 깨지기 때문에 encoding='CP949'로 인코딩을 설정해준다. import pandas as pd csv = pd.read_csv('test.csv',\ names=['gu','dong','name','category','microReview','commonAddr','addr'], \ encoding='CP949') 특정 열 값을 리스트로 변경하기..
많은 양의 데이터를 저장하고 있는 csv에서, 특정 값을 행만 선별해 찾고 싶을 때가 있다. 이럴 때, 파이썬 pandas 모듈을 사용하면 특정 값을 가진 행을 손쉽게 얻을 수 있다. 참고로, 파이썬 pasndas는 'pip install pandas'로 쉽게 할 수 있다. 데이터 및 찾을 행 선정 naver_place.csv는 네이버 플레이스의 서울시 음식점 정보가 저장되어 있는 csv이다. 해당 csv 파일에서 구와 동이 '동대문구 회기동'인 행을 찾아보자. cvs 파일 읽기 (read_csv) 특정 값을 가진 행을 찾기 위해 먼저 read_csv를 사용해 csv 파일을 읽어들인다. 각 열(columns)의 이름은 names=[]로 지정해줄 수 있고, 한글 데이터인 경우 인코딩 없이 그냥 읽으면 깨질..
+) 제가 크롤링에 사용한 URL 서비스 자체(store.naver.com)가 중단되고 새롭게 개편된 것으로 확인됩니다. 따라서 아래 코드에 사용된 URL로는 현재 크롤링이 불가하니 JSON 응답값을 주는 사이트의 크롤링 코드 작성 방법, 방식 위주로만 확인 부탁드립니다! 저번 포스팅에서 서울시의 구/동 별로 카테고리를 나누어 크롤링하기 위해 서울시 행정구역 정보를 저장했고, 크롤링 URL을 구성하기 위한 작업을 선행했다. 그리고 해당 URL 요청을 통해 응답을 받았고 응답 코드 500이 나오는 경우에 대한 처리까지 마쳤다. 이번 포스팅에서는 저번 내용에 이어서, 응답으로 받은 값을 파이썬 json 모듈을 사용해 파싱하고 저장하는 코드를 작성해보자. 이전 포스팅에서 내용과 코드가 모두 이어지므로 필요한 ..
+) +) 제가 크롤링에 사용한 URL 서비스 자체(store.naver.com)가 중단되고 새롭게 개편된 것으로 확인됩니다. 따라서 아래 코드에 사용된 URL로는 현재 크롤링이 불가하니 JSON 응답값을 주는 사이트의 크롤링 코드 작성 방법, 방식 위주로만 확인 부탁드립니다! 빅데이터 관련 수업을 들은 적이 있는데 뭔가 데이터 처리를 하기 전에 일단 데이터를 크롤링해와야 했던 과제가 있었다. 네이버 플레이스에서 맛집을 크롤링해보기로 해서 약 12만 건? 정도 크롤링했었다. 이번 포스팅에서는 네이버 플레이스에서 서울시 맛집을 구/동별로 크롤링하는 코드를 소개해보려 한다. 서울시 구/동 정보, 파일에 저장해놓기 서울시의 구/동 정보를 먼저 탐색하는 이유는 두가지이다. 첫 번째는 크롤링할 때, URL 매개변..
크롬 확장프로그램, JSONView 크롤링을 하거나 기타 등의 작업을 하다보면 JSON 데이터를 마주하게될 때가 있는데 이 때 추천하는 크롬 확장프로그램 중 하나가 바로 JSONView이다. 프로그램 이름으로도 기능을 쉽게 유추할 수 있는데, 바로 JSON 데이터를 가독성있게 볼 수 있도록 해주는 확장프로그램이다. JSON이란? (출처: 위키백과) JSON(JavaScript Object Notation)은 "속성-값" 쌍 또는 "키-값 쌍"으로 이루어진 데이터 오브젝트를 전달하기 위한 개방형 표준 포맷이다. 본래는 자바스크립트 언어로부터 파생되어 자바스크립트의 구문 형식을 따르지만 언어 독립형 데이터 포맷이다. JSONView 설치 크롬 확장프로그램이기 때문에 설치는 매우 쉽다. 크롬 웹스토어의 해당 ..
해당 포스팅은 KISA의 와 에서 필요한 부분을 추출해 요약한 내용 +a 를 담고 있습니다. 혹시 문제가될 시 즉시 삭제하겠습니다. 서론 인터넷 침해사고를 일으키는 해킹 기법이 지능화됨에 따라 침해사고에 대한 분석도 어려워지고 있다. 홈페이지 악성코드 은닉사고의 경우도 다양한 방법으로 악성코드를 숨기고 있으며, 악성 Bot도 탐지가 어려운 루트킷과 결합되어 탐지가 어려워지고 있다. 본 안내서에서는 해킹피해 기관이나 개인이 침해사고를 당했을 때 이에 대응하기 위한 분석절차와 기술을 제시한다. 단계별 침해사고 분석 절차 사고대응 방법론 사고 탐지, 초기 대응, 대응전략 체계화, 사고 조사, 보고서 작성, 해결의 순으로 이루어진다. 사고 탐지 : 정보보호 및 네트워크 장비에 의한 이상 징후 탐지. 관리자에 의..
프로그래머스 탐욕법(Greedy) - 체육복, 문제 확인 1차원적으로 문제를 이해해서는 테스트케이스 중 여러 문제를 통과할 수 없다. 테스트케이스를 알 수 없어 대체 뭐가 문제인지 난항에 빠졌었는데 '질문하기'를 이것저것 찾아보다가 겨우 해결할 수 있었다. 실전에서는 스스로 모든 예외를 생각해봐야 할텐데 아직 그런 스킬이 많이 부족한 것 같다. 문제 설명은 아래와 같다. 일부 학생의 체육복이 도난당함 여벌 체육복이 있는 학생이 체육복을 빌려줄 수 있음 하로 앞번호 학생이나 뒷번호 학생에게만 체육복을 빌려줄 수 있음 최대한 많은 학생이 체육수업을 들을 수 있게 해야 함 여벌 체육복을 가져온 학생이 체육복을 도난당했을 경우 하나만 도난당했다고 가정, 다른 학생에게 빌려줄 수 없음 n: 전체 학생 수 lost..