양방향 암호화 vs 단방향 암호화 양방향 암호화는 암호화된 데이터에 대한 복호화가 가능한 암호화 방식을 말한다. 지난 포스팅에서 살펴본 대칭키, 공개키 암호화 방식이 양방향 암호화에 속한다. 단방향 암호화는 양방향 암호화와는 다르게 암호화된 데이터에 대한 복호화가 불가능한 암호화 방식을 말한다. 대표적으로 해시(Hash)나 메시지 인증코드(MAC)가 있다. 일방향 해시함수(Hash) 일방향 해시함수는 임의의 길이 메시지로부터 고정길이의 해시값을 계산한다. 단방향 암호화이기 때문에 해시값으로부터 메시지를 역산할 수는 없으며 이것을 일방향성을 갖는다고 한다. 또한, 메시지가 다르면 해시값도 다르다는 특징이 있는데 해당 특징으로 인해 해시함수를 무결성을 확인하기 위한 방안으로 사용하기도 한다. 메시지가 1비트..
프로그래머스 해시 - 베스트앨범, 문제 확인 프로그래머스 해시 마지막 문제이다. 문제 설명은 아래와 같다. 장르별로 가장 많이 재생된 노래 두개를 뽑으려 함 노래는 고유번호로 구분되며 수록 기준은 아래와 같음 1) 속한 노래가 많이 재생된 장르 먼저 수록 2) 장르 내에서 많이 재생된 노래 먼저 수록 3) 장르 내에서 재생횟수가 같은 노래 중에서는 고유번호가 낮은 노래를 먼저 수록 genres : 노래의 장르를 나타내는 문자열 배열 (genres[i]가 노래 장르, i가 고유번호) plays: 노래별 재생 횟수를 나타내는 정수 배열 (plays[i]는 고유번호가 i인 노래가 재생된 횟수) 장르에 속한 곡이 하나라면, 하나의 곡만 선택함 뽑을 노래 두개의 고유번호를 순서대로 리턴하도록 solution 함수..
프로그래머스 해시 - 위장, 문제 확인 문제 설명은 아래와 같다. 스파이들은 매일 다른 옷을 조합해 자신을 위장함 clothes는 스파이가 가진 의상들이 담긴 2차원 배열, 각 행은 [의상이름, 종류]로 이루어져 있음 의상 수는 1개 이상, 30개 이하 같은 이름을 가진 의상은 없음 하루에 최소 한개의 의상은 입어야 함 서로 다른 옷의 조합 수를 리턴하도록 solution 함수를 작성 프로그래머스 해시 - 위장, 문제 풀이 (파이썬) [[yellow_hat, headgear], [blue_sunglasses, eyewear], [green_turban, headgear]] 최소 한개 이상은 입게 하면서 모든 옷 조합 수를 구하려면 (의상종류+1)을 모두 곱한 후 -1(반드시 하나는 선택)을 해주면 된다...
프로그래머스 해시 - 전화번호 목록, 문제 확인 문제 설명은 아래와 같다. 한 전화번호가 다른 번호의 접두어인 경우가 있는지 확인하려 함 구조대 전화번호가 119, 지영석의 전화번호가 11 9552 4421일 때, 구조대 전화번호는 지영석 전화번호의 접두사임 phone_book은 전화번호를 담은 배열 접두어인 경우가 있으면 flase, 아니면 true를 반환 프로그래머스 해시 - 전화번호 목록, 문제 풀이 (파이썬) 일단 같은 인덱스인 경우는 스킵하고 더 짧은 값을 찾아낸 후 각 값을 더 짧은 길이만큼으로 잘랐을 때, 포함되는 관계가 있는지 확인하는 방식을 사용했다. def solution(phone_book): for i,k in enumerate(phone_book): for i_,k_ in enum..
혼자 정보보안 공부를 시작하면서 여러가지를 책으로도 공부하고 인터넷으로도 공부하고 했지만 제일 오랜 시간을 투자하지 못했던 것이 자료구조, 알고리즘 공부이다. 오늘부터 최소 이틀에 한문제라도 풀어보려 한다. 해시는 키-값 (key-value) 쌍으로 데이터를 저장하는 자료구조로 프로그래머스(programmers)에서는 해당 자료구조를 학습하기 위한 4가지 문제를 제공하고 있다. 프로그래머스 해시 - 완주하지 못한 선수, 문제확인 문제 설명은 아래와 같다. 단 한명의 선수를 제외하고는 모든 선수가 마라톤을 완주함 선수들의 이름이 담긴 배열 participant이 주어짐 완주한 선수들의 이름이 담긴 배열 completion이 주어짐 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성..