분류 전체보기
4. 비대칭 암호화 방식
4. 비대칭 암호화 방식 대칭 암호화 “키 배포” 문제의 보완책 4-1 디피-헬만 키 교환 ★공개 키 교환 방법★ 소수를 이용한 나머지 연산을 사용한다. DH 키 교환 방식 Alice와 Bob 각각 a, b 자신만의 개인키를 가진다. a=6, b=15라 가정한다. 공개된 숫자 p와 g의 설정 누구나 아는 공개된 숫자이다. p = 23, g = 5 숫자 A의 계산과 전송 Alice가 Bob에게 숫자 A를 전송한다. $$ \begin{aligned} \A &= {g^a}\mod{p} \ \&= 5^6 \mod 23 \ \&= 15625 \mod 23 \ \&= 8 \end{aligned} $$ 숫자 B의 계산과 전송 Bob이 Alice에게 숫자 B를 전송한다. $$ \begin{aligned} \B &= g..
3. 대칭 암호화 방식
3. 대칭 암호화 방식 특징 암호화 키와 복호화 키가 서로 같음 장점 암호화, 복호화에 걸리는 시간이 짧다. 간단한 방식으로 구현된다. 3-1. DES 64비트 평문을 64비트 암호문으로 암호화하는 기법 암호화와 복호화에 사용하는 키는 56비트 크기 → 8비트는 오류 검출을 위해 사용(패리티 비트) 블록 암호화하려는 하나의 단위 데이터(64비트) Mode 여러 블록 암호화를 반복하는 방법 암호화 과정 라운드 암호화의 각 과정 한 단계 하나의 블록을 32/32(L/R) 로 나눈다. L은 F와 논리합으로 계산한다. R은 그대로 내려온다. L과 R의 위치를 바꾼다. 2.~4.를 16번 반복한다. 16라운드에서 두 블록을 합쳐 결과값을 만든다. 3-2 트리플 DES DES의 대안으로 등장하였다. DES를 3번 ..
[디자인 패턴] Observer 패턴
Observer 패턴 관찰 대상인 특정 객체의 상태가 변하면 그것을 관찰하는 다른 여러 객체에게 이 사실을 자동으로 통지하여 자동 갱신되도록 한다. 예시 엑셀에서 표를 이용하여 그래프를 생성했다고 하자 표의 값이 변경되면 그 즉시 그래프의 모양이 바뀌는것도 Observer패턴의 일부이다. 코드 다음은 Observer 패턴이 적용되지 않은 코드이다. class Table { private int a, b, c; public void update(EData d) { this.a = d.getA(); this.b = d.getB(); this.c = d.getC(); display(); } public void display() { } } class Bar { private int a, b, c; public..
[디자인 패턴] Template Method 패턴
Template Method 패턴 개요 특정 기능을 수행하기 위한 처리 단계에 대한 기본 구조가 유사할 때 사용한다. 커피와 차를 만드는 방법을 보자 커피 요리법 차 요리법 1. 물을 끓인다. 1. 물을 끓인다. 2. 끓는 물에 커피를 우린다. 2. 끓는 물에 티백을 적신다. 3. 컵에 따른다. 3. 컵에 따른다. 4. 설탕과 우유를 첨가한다. 4. 레몬을 첨가한다. 커피 요리법과 차 요리법은 매우 유사하다. 이를 이용하여 공통적인 부분을 묶는다면 유지보수성이 올라갈 수 있다. 코드 일단 따로따로 구성된 코드를 확인해보자. class Coffee { void prepareRecipe() { boilWater(); brewCoffee(); pourInCup(); addSugarAndMilk(); } pri..
[디자인 패턴] Adaptor 패턴
Adaptor 패턴 개요 기존 클래스를 외부의 표준 클래스나 구매 클래스로 대치하는 것이 필요할 때 적용한다. 코드 기존 Tax 클래스의 findTax() 메소드의 기능 변경을 하기 위해 다른 인터페이스를 생성하고 적용한 코드이다. public interface TaxIF { public void findTax(); } public class Tax implements TaxIF { public void findTax() { } } public class TaxTest { static TaxIF t; public static void main(String[] args) { t = new Tax(); t.findTax(); } } public interface HSTaxIF { public void get..
[디자인 패턴] Singleton 패턴
Singleton 패턴 개요 특정 클래스가 단 하나의 객체만을 생성하는 것을 보장 예시 ConnectionPool 코드 public class OrderController{ **private static OrderController oc;** private OrderController() { ... } public static OrderController getOC(){ if(oc==null){ oc = new OrderController(); } return oc; } } 결과 클래스 메소드를 정의하여 객체 생성 없이 클래스 이름만으로 유일한 객체를 생성할 수 있으며 어떤 곳에서도 쉽게 접근 가능하다. 특정 클래스에 대한 단일 개체 생성을 보장한다. 성능 개선, 다중 쓰레드 환경, 컴퓨터 자원을 소비하..
[디자인 패턴] 개요
개요 설계 재사용에 의해 높은 생산성과 유지보수가 용시한 설계를 가능하도록 한다. 유사 객체들을 적절한 클래스로 추상화하고 인터페이스와 상속 관계를 포하한 주요 클래스 사이의 관계를 발견하는 것은 어려움 → 검증된 설계 패턴을 재사용하는 것이 품질 좋은 설계를 가능하도록 함 GoF(Gang of Four) 기반 설계 패턴 분류 생성 구조 행위 Singleton Adapter Template Method Factory Method Birdge Observer Abstract Method Composite Interpreter Builder Decorator Chain of Responsibility Prototype Facade Command Flyweight Interator Proxy Mediator ..
[BOJ/JAVA] 1459번: 걷기
생성 일시: 2022년 12월 11일 오후 9:52 태그: Java 1459번: 걷기 1459번: 걷기 세준이는 학교에서 집으로 가려고 한다. 도시의 크기는 무한대이고, 도시의 세로 도로는 모든 정수 x좌표마다 있고, 가로 도로는 모든 정수 y좌표마다 있다. 세준이는 현재 (0, 0)에 있다. 그리고 ( www.acmicpc.net 키워드 세준이는 현재 (0, 0)에 있다. 그리고 (X, Y)에 위치한 집으로 가려고 한다. 세준이가 걸을 수 있는 방법은 두가지 인데, 하나는 도로를 따라서 가로나 세로로 한 블록 움직여서 이번 사거리에서 저 사거리로 움직이는 방법 블록을 대각선으로 가로지르는 방법이 있다. 구현 대각선 비용이 이득인 경우 대각선 이동 비용 < 가로세로 이동 비용 * 2 최대한 대각선으로 이..