프로그래밍

전략패턴알고리즘 군을 정의하고 캡슐화해서 각각의 알고리즘군을 수정해서 쓸 수 있게 해줍니다전략 패턴을 사용하면 클라이언트로부터 알고리즘을 분리해서 독립적으로 변경할 수 있습니다.옵저버 패턴한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체에게 연락이가고 자동으로 내용이 갱신되는 방식으로 일대다 의존성을 정의합니다데코레이터 패턴객체에 추가 요소를 동적으로 더할 수 있습니다.데코레이터를 사용하면 서브클래스를 만들 때보다 훨씬 유연하게 기능을 확장할 수 있습니다.팩토리 메소드 패턴객체를 생성할 때 필요한 인터페이스를 만듭니다.어떤 클래스의 인스턴스를 만들지는 서브클래스에서 결정합니다.팩토리 메소드 패턴을 사용하면 클래스 인스턴스 만드는 일을 서브클래스에게 맡기게 됩니다.추상 팩토리 패턴구상 클래스에 의존하..
디자인 원칙애플리케이션에서 달라지는 부분을 찾아내고 달라지지 않는 부분과 분리한다. 구현보다는 인터페이스에 맞춰서 프로그래밍한다. 상속보다는 구성을 활용한다. 느슨한 결합객체들이 상호작용할 수는 있지만, 서로르 잘 모르는 관계주제는 옵저버가 특정 인터페이스를 구현한다는 사실만 앎옵저버는 언제든지 새로 추가할 수 있음새로운 형식의 옵저버를 추가할 때도 주제를 변경할 필요가 전혀 없음 주제와 옵저버는 서로 독립적으로 재사용할 수 있음 주제나 옵저버가 달라져도 서로에게 영향을 미치지는 않음상호작용하는 객체 사이에는 가능하면 느슨한 결합을 사용해야 함 클래스는 확장에는 열려 있어야 하지만 변경에는 닫혀 있어야 함 추상화된 것에 의존하게 만들고 구상 클래스에 의존하지 않게 만들어야 함
디자인 패턴 패턴 - 특정 컨텍스트 내에서 주어진 문제의 해결책컨텍스트 - 패턴이 적용되는 상황문제 - 컨텍스트 내에서 이뤄야 하는 목표를 뜻함해결책 - 제약조건 속에서 누가 적용해도 목표를 이룰 수 있는 일반적인 디자인  생성패턴 싱클턴추상팩토리 팩토리 메서드 프로토타입 빌더    구조데코레이터프록시 퍼사드 컴포지트 어댑터 플라이웨이트 브리지 행동템플릿 메소드 싱글턴 반복자 옵저버 상태 전략 비지터 중재자 인터프리터 메멘토 클래스 템플릿 메소드 펙토리 메소드 어댑터 인터프리터  객체  (나머지) 패턴으로 생각하기 최대한 단순하게이 문제에 어떻게 패턴을 적용할 수 있을까가 아니라 어떻게 하면 단순한게 해결할 수 있을까에 초점을 맞춰야함  디자인 패턴은 만병통치약이 아님패턴을 사용할 때는 그 패턴이 설꼐한..
* Elliptical Curve Digital Signature Algorithm [Step01] 임의의 Eliptic Curve를 선택합니다. [Step02] 임의의 자연수 d를 비밀키로 선택합니다. (Elliptic Curve의 차수 (n)보다 작아야합니다.) [Step03] 비밀키와 Generator Point (G)를 곱해 공개키 Q Point를 생성합니다. [Step04] Elliptic Curve의 차수 (n)보다 작은 임의의 자연수 K를 선택합니다. (Elliptic Curve의 차수 (n)보다 작아야합니다.) [Step05] kG를 계산해 나온 좌표의 x 좌표를 n으로 나눈 나머지를 r이라고 합니다. [Step06] 서명할 메시지를 자연수로 m이라고 가정합니다. [Step07] Hash를..
AESGalois Field GF(p^n) => GF(2^8) 1Byte를 표현하는 0부터 2^8-1 까지의 2^8개의 원소에만 관심을 가짐        GF(2^8)에서 (+) 연산 Galosis Field에서의 덧셈은 역변환이 가능합니다.  GF(2^8)에서 (x) 연산   닫힌 연산으로 만들기 위해, 인수분해가 불가능한 다항식인 x^8 + x^4 + x^3 + x + 1로 나눕니다.     Add round key 변환앞의 Round의 마지막 4Byte를 왼쪽으로 Rotate합니다.sbox를 이용해 치환합니다.해당 Round의 상수값과 XOR합니다.앞 Round의 첫 4Byte와 XOR합니다. AES Encryption & Decryption AES Decryption [0 Round] Messag..
Elliptical Curve Diffie-Hellman EphemeralDHE과 ECDHE 모두 Key를 한번의 접속에만 사용하고 폐기합니다.도청자가 Key를 알아냈다고 하더라도, 그것으로 풀 수 있는 Message는 한번의 접속에만 해당합니다.계산식 => y^2 = x^3 + ax + b / 4a^3 + 27b^2 ≠ 0 [Step 01] 곡선 위의 임의의 점 P, Q를 선택합니다.                     P( x(p), y(p) )     Q( x(q), y(q) ) [Step 02] P, Q를 지나는 직선이 곡선과 만나는 직선을 정의합니다.                     y = sx + d [Step 03] P, Q, R을 지나는 직선의 기울기를 구합니다.             ..
RSA[Step 01] Prime Number인 p, q를 선택하고 K를 계산                     p, q    K = p X q [Step 02] (p−1)과 (q−1)의 LCM인 φ 를 계산합니다.                     φ=LCM((p−1)×(q−1)) [Step 03] φ와 서로소인 소수 e를 암호화키로 결정합니다.                     e [Step 04] 복호화 키인 d를 결정합니다.                     d×e mod φ = 1 [Step 05] Message Encryption & Decryption                Message Encryption =>  c = m^e mod K                Message ..
Modular InverseA X A^-1 ≡ 1 (modC)(A X A^-1) mod C = 1 mod C(A X A^-1) mod C = 1! C와 서로소인 수만 Modular Inverse (mod C)를 가질 수 있음[Step 01] B의 값을 0부터 C-1까지 설정 [Step 02] B값에 대해 A X B mod C 를 계산 [Step 03] A mod C의 Modular Inverse는 A X B mod C = 1 을 만족하는 B의 값임 ex) 3 (mod 7)       3 X 5 ≡ 15 ≡ 1 (mod 7)       B = 5 Fast Modular ExponentiationA^2 mod C = ((A mod C) × (A mod C)) mod C A mod C 의 결과를 이용하여 연산..
DiffieHellmanRFC 7917를 살펴보면 ffdhe2048의 p, g의 값이 명시되어 있습니다.p를 선택할 때, p가 g와 나눠 떨어지면 안됩니다.[Step01] Alice와 Bob이 하나의 Prime Number인 g를 선택합니다. [Step02] Alice와 Bob은 각각 자신의 비밀키로 사용할 임의의 Prime Number를 선택합니다.                 X(alice)    X(bob) [Step03] Alice와 Bob은 각각 공개키를 생성하며 해당 키를 상대에게 전송합니다.                 y(alice)=g^x(alice) mod p     y(bob)=g^x(bob) mod p [Step04] Alice와 Bob은 상대방의 공개키와 자신의 개인키를 이용하여 ..
류가든
'프로그래밍' 카테고리의 글 목록 (4 Page)