Basic(88)
-
SHA 해싱
SHA 해싱SHA(Secure Hashing Algorithm)는 안전한 해시 알고리즘으로 암호학적 해시 함수들의 모음입니다. SHA-0을 시작으로 이후 변형된 SHA-1이 발표되었고, 이후 SHA-224, SHA-256, SHA-384, SHA-512가 더 발표되었습니다. SHA-256과 SHA-512는 각각 32비트, 64비트 워드를 사용하는 해시함수이며 몇몇 상수들이 다르지만 그 구조는 라운드의 수를 빼고는 같습니다.SHA-224와 SHA-384는 SHA-256과 SHA-512의 결과를 최종 해시값 길이에 맞춰 잘라낸 것입니다. 해시값을 얻어낼 때에는 원문의 각 비트들을 and, or, xor, rotr(회전) 등의 연산을 하며 해싱하게 되는데 원문에서 토시 하나라도 달라지게 되면 스노우볼 효과로 ..
2016.11.09 -
RSA 암호화
RSA 암호화RSA암호화는 공개키 암호화 시스템의 하나로, 암호화 뿐만 아니라 전자서명이 가능한 최초의 알고리즘입니다.RSA암호화는 비대칭 방식으로 암호화 하는 키와 복호화하는 키가 다른 암호화 방식입니다.소인수분해의 난해함을 이용한 암호화 방식으로 공개키만 가지고는 개인키를 알아낼 수 없도록 설계되어 있습니다. RSA 암호화 처리 방식RSA 암호화는 두 개의 키를 갖습니다.- 키 : 메시지를 열고 잠그는 상수 공개키와 개인키 두 가지를 사용하는데- 공개키 : 데이터를 암호화하는데 사용하는 키, 공개되어 있는 키- 개인키 : 암호화된 데이터를 풀어내는데 사용하는 키, 복호화 할 수 있는 키, 공개되어있지 않은 키라고 해서 다른말로 비밀키라고도 합니다.누구나 암호화 시킬 수 있지만 그것을 볼 수 있는 사람..
2016.11.09 -
배열과 리스트
배열과 연결리스트 배열은- 스택 영역에 자료를 저장하고 컴파일시 공간을 확보하게 됩니다.- 자료를 순차적으로 저장하고 인덱스의 번호로 접근이 가능합니다. + 자료의 접근과 저장이 빠릅니다.- 한번 확보한 배열의 크기를 변경하기가 어려워 메모리가 낭비되고 비효율적일 수 있습니다.- 배열의 내부 요소를 정렬하고자 할 때 연결리스트에 비해 빠릅니다. + 인덱스 번호로 바로 접근해서 요소를 찾아내고 정렬하기 때문입니다.- 내부 데이터의 탐색이나 정렬을 자주한다면 배열을 사용하는 편이 좋습니다. + 접근하기가 연결리스트에 비해 빠르기 때문 (인덱스) 연결리스트는- 힙 영역에 자료를 저장하고 필요할 때마다 메모리를 확보해 사용합니다.- 매번 데이터를 저장할 때마다 데이터를 위한 메모리를 확보해야 하므로 연산 속도가..
2016.11.09 -
배열(Array)
배열(Array)의 개념배열은 여러개의 동일한 데이터 타입의 데이터를 한번에 만들 때 사용됩니다. 만일, 6개의 정수를 저장할 공간이 필요한 경우, 배열이 없다면int a1, a2, a3, a4, a5, a6;으로 선언해야하지만, 배열이 지원된다면 간단하게int a[6];으로 선언될 수 있습니다. 배열은 인덱스 번호를 기준으로 작업을 할 수 있기 때문에 효율적으로 루프를 설정하여 여러 상황에서 간단한 코드를 이용하여 결과를 나타낼 수 있습니다.- C언어에서는 배열의 인덱스는 0부터 시작- a[6] = a[0] ~ a[5] 까지 6개 2차원 배열2차원 배열은 1차원 배열이 여러개 모여서 이루어집니다.2차원 배열에서 가로줄은 행, 세로줄을 열이라고 합니다. int a[3][4]; a[0][0]a[0][1]a..
2016.11.09 -
연결리스트(Linked List)
연결리스트(Linked List)란?동적으로 크기가 변할 수 있고 삭제나 삽입시에 데이터를 이동할 필요가 없는 자료구조가 연결리스트입니다.- 데이터와 링크로 구성되어있고 링크가 데이터들을 연결하는 역할을 합니다. - 요런 형태입니다. 연결리스트는 노드로 구성되어있는데,- 노드 : 데이터 필드, 링크 필드로 구성- 데이터 필드 : 실제 저장할 데이터가 있는 공간- 링크 필드 : 다른 노드를 가리키는 포인터를 저장 배열의 경우 중간에 데이터를 삽입하려면 삽입하려는 위치에 있는 데이터와 그 이후에 있는 데이터들을 모두 한 칸씩 뒤로 움직여야하는데, 연결리스트는 그럴 필요가 없습니다.- 삽입하려는 위치의 링크만 변경해 주면 됩니다. 단순 연결 리스트- 위의 연결 리스트가 단순 연결 리스트- 데이터 필드와 링크 ..
2016.11.09 -
정렬 알고리즘 비교
정렬 알고리즘의 성능 비교 알고리즘 최선 평균 최악 삽입 정렬O(n) O(n^2) O(n^2) 선택 정렬 O(n^2) O(n^2) O(n^2) 버블 정렬 O(n^2) O(n^2) O(n^2) 쉘 정렬 O(n) O(n^1.5) O(n^1.5) 퀵 정렬 O(nlog 2n)O(nlog 2n) O(n^2) 힙 정렬 O(nlog 2n) O(nlog 2n) O(nlog 2n) 합병 정렬 O(nlog 2n) O(nlog 2n) O(nlog 2n) 기수 정렬 O(dn) O(dn) O(dn) - 최적의 정렬 방법은 정렬해야 할 데이터의 수, 크기, 타입에 따라 달라지므로 정렬 방법들의 장단점을 잘 이해하여 적합한 정렬을 사용할 수 있어야 합니다. 정렬 알고리즘별 실험 결과- 정수 60000개 정렬 알고리즘실행시간 (단위..
2016.11.09