도형 그리기 및 이동

Posted by 백창
2014. 11. 3. 10:19 개발/Open GL
반응형


 개요

 

마우스 드래그로 도형을 그리고 키보드 방향키를 눌렀을 때 그려진 도형이 이동


 소스

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
#include <gl/glut.h>
#include <stdio.h>
 
/**
* 도형이동크기
*/
#define Move 0.05
 
/**
* Mouse 좌표 계산
*/
GLint TopLeftX, TopLeftY, BottomRightX, BottomRightY;
/**
* 현재 도형 좌표
*/
GLdouble X1, X2, Y1, Y2;
 
/**
* My Display
*/
void MyDisplay(){
    glViewport(0, 0, 500, 500);
    glClear(GL_COLOR_BUFFER_BIT);
    glColor3f(0.5, 0.5, 0.5);
 
    glBegin(GL_POLYGON);
 
    glVertex3f(X1, Y1, 0.0);
    glVertex3f(X1, Y2, 0.0);
    glVertex3f(X2, Y2, 0.0);
    glVertex3f(X2, Y1, 0.0);
 
    glEnd();
    glFlush();
}
 
/**
* Start Mouse
*/
void MyMouseClick(GLint Button, GLint State, GLint X, GLint Y){
    if (Button == GLUT_LEFT_BUTTON && State == GLUT_DOWN){
        TopLeftX = X;
        TopLeftY = Y;
    }
}
 
void MyMouseMove(GLint X, GLint Y){
    BottomRightX = X;
    BottomRightY = Y;
 
    //마우스로 인해 그려지는 도형의 좌표 값
    X1 = TopLeftX / 500.0;
    X2 = BottomRightX / 500.0;
    Y1 = (500 - TopLeftY) / 500.0;
    Y2 = (500 - BottomRightY) / 500.0;
 
    glutPostRedisplay();
}
/**
* End Mouse
*/
 
void MySpecial(int key, int x, int y){
    //키보드 방향에 따른 위치이동
    switch (key){
    case GLUT_KEY_LEFT:
        X1 -= Move;
        X2 -= Move;
        printf("[Debug] : left %f,%f\n", X1, X2);
        break;
    case GLUT_KEY_RIGHT:
        X1 += Move;
        X2 += Move;
        break;
    case GLUT_KEY_UP:
        Y1 += Move;
        Y2 += Move;
        break;
    case GLUT_KEY_DOWN:
        Y1 -= Move;
        Y2 -= Move;
        break;
    }
 
    glutPostRedisplay();
}
 
void MyInit(){
    glClearColor(1.0, 1.0, 1.0, 1.0);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
 
    glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0);
}
 
int main(int argc, char **argv){
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB);
    glutInitWindowSize(500, 500);
    glutInitWindowPosition(0, 0);
    glutCreateWindow("Second");
    MyInit();
    glutDisplayFunc(MyDisplay);
    glutMouseFunc(MyMouseClick);
    glutMotionFunc(MyMouseMove);
    glutSpecialFunc(MySpecial);
 
    glutMainLoop();
    return 0;
}



 결과

 


반응형

'개발 > Open GL' 카테고리의 다른 글

이미지 불러오기  (0) 2014.11.21
정육면체 그리기  (0) 2014.11.21
[빌드 오류] failure during conversion to COFF: file invalid or corrupt  (0) 2014.10.17
Menu & SubMenu 생성  (11) 2014.10.09
freeglut API 설치  (0) 2014.09.29

고전암호기법

Posted by 백창
2014. 10. 20. 10:18 컴퓨터보안/개념
반응형

기본용어

- plaintext : 평문

- ciphertext : 암호문

- cipher : 평문을 암호화 하는 알고리즘

- key : 전달자와 수신자만 알고 있는 암호화에 사용되는 정보

- encipher : 암호화

- decipher : 복호화

- cryptography : 암호학

- cryptanalysis(codebreaking) : 알려진 키 없이 복호화 (해커들..) 암호해독학

- cryptology : 암호학과 암호해독학을 합친


대칭 알고리즘

- 강력한 알고리즘

- 비밀 키의 안전한 전달법


Cryptography

- 치환(substitution) : 각 원소가 다른 원소에 맵핑

- 전치(Transposition) : 각 원소를 재배치


공격 유형(가진정보)

- 암호문 단독 공격 : 암호 알고리즘, 암호문

- 기지 평문 공격 : 암호 알고리즘, 암호문, 하나 이상의 비밀키에 의한 평문-암호문 쌍

- 선택 평문 공격 : 암호 알고리즘. 암호문, 해독자가 선택한 평문 메시지와 비밀키로 생성된 그 평문에 대한 암호문

- 선택 암호문 공격 : 암호 알고리즘, 암호문, 해독자가 선택한 목적 암호문과 비밀키로 생성된 그 암호문의 해독된 평문

- 선택 원문 공격 : 암호 알고리즘, 암호문, 해독자가 선택한 평문 메시지와 비밀키로 생성된 그 평문에 대한 암호문, 해독자가 선택한 목적 암호문과 비밀키로 생성된 암호문에 해독된 평문


절대 안정성과 계산 안정성

- 절대 안정성 : 해당 암호 기법으로 생성된 암호문을 아무리 많이 사용하더라도 해당 암호문에 평문을 알아낼 수 있는 충분한 정보를 포함하지 않을 경우(OTP)

- 계산 안전성 : 암호 해독 비용이 암호화된 정보의 가치 초과, 암호 해독 시간이 정보의 유효 기간 초과


Ceaser cipher

- 치환에 의한 암호화

- 3번째 글자로 대체

- 25개의 키를 가짐

- 평문의 언어를 알고 있으면 쉽게 인식 가능(brute force search에 취약)


Monoalphabetic cipher

- 시이저 암호기법이 안ㅇ전하다고 볼 수 없으나 임의의 치환을 허용해 키 공간을 급격히 증가 시킴

- 26!의 키

- DES보다 몇 십배 큰 키 공간을 가져 안전해 보이지만 언어의 특성(특정 문자의 빈도수)때문에 안정성이 급격히 떨어진다.


Playfair cipher

- 다중 문자 치환

- 2중 문자를 한 단위로 취급해 치환해 안전도를 높임

- 특정 키워드를 기반으로 하여 5x5 matrix를 만듦

- monoalphabetic cipher에 비해 복잡한 구조를 가지지만 평문의 구조가 많이 드러난다.


Hill cipher

- m개의 평문을 m개의 암호문으로 치환함

- 이때, m개의 선형 방정식에 의해 치환됨

in matrix, C = PK mod 26

P = mod 26


Polyalphabetic cipher

- 평문에 대해 서로 다른 방식의 단일 문자 치환 기법을 사용


Vinenere cipher

- 각 평문자에 대한 암호 문자가 유일한 키워드의 각 문자에 대하여 하나씩 여러 개 존재한다. 따라서 문자 빈도수에 대한 정보가 감춰지지만 평문 구조에 대한 정보가 모두 은폐되는 것은 아니다.

- 여러 가지 동일 문자열 사이의 거리에 대해 공통인가를 알아봄으로써 키워드 길이를 근사하게 추정할 수 있다. 그리고 알려진 빈도 특성을 이용하여 해독한다(Kasiski method)

Key         : d e c p t i v e

plain text : w e a r e d i s

ciphertext: z i c v t w q n 

- Autokey cipher : 반복되지 않은 키워드를 사용하여 Kasiski method에 의한 해독을 방지한다. 키워드와 평문을 연결시켜 키를 만들어 사용하는 기법이다. 하지만 키와 평문이 동일한 문자 빈도를 갖기 때문에 통계적 기법이 적용 가능하다.

Key         : deceptive

plain        : wear...

autokey    : deceptivewear ...


Vernam cipher

- 암호학적 공격에 안전하기 위해 평문과 동일 한 길이의 키를 가진다.

- 평문과 통계적 연관성이 없어야 한다.




One Time Pad

- 메시지와 정확히 같은 길이이고 반복되지 않는 랜덤 키 사용을 제시 함으로써 통계적 관계를 갖지 않는 임의의 키를 출력한다.

- Perfect security를 제공하지만 대용량의 랜덤한 키를 다루기 어렵고 키 분배 및 보호의 문제가 발생한다.


Transposition cipher

- 전치에 의한 암호

- 평문과 같은 빈도를 가진다.


Rail Fence cipher

- ex

plain : meet me

m e m 

  e  t  e

cipher: memete


Row Transposition cipher

- 키의 순서대로 재배치하는 암호화


반응형

'컴퓨터보안 > 개념' 카테고리의 다른 글

서론  (0) 2014.10.20

DES 암호화 과정(java)

Posted by 백창
2014. 10. 20. 10:10 컴퓨터보안/Programming
반응형


 개요

 

 DES 암호화 과정 16R를 손으로 풀어보라는 과제 때문에 작성한 코드 백업용



 소스


급한대로 작성

 

desCrypt.zip



반응형

'컴퓨터보안 > Programming' 카테고리의 다른 글

공개키 암호화 [RSA구현]  (0) 2015.01.16
대칭키 암호화  (0) 2014.12.27

서론

Posted by 백창
2014. 10. 20. 09:25 컴퓨터보안/개념
반응형

Computer Security

 정보 시스템 자원에 대한 무결성과 가용성, 기밀성유지와 같은 목적을 달성하기 위해 자동화된 정보시스템에 적용되는 보호


CIA tiad




Passive attack

 도청, 감시 등 데이터를 조작하지 않고 들여다 보기만 하는것


Active attack

 데이터 스트림을 불법 수정 또는 거짓 데이터를 전달 하는것


반응형

'컴퓨터보안 > 개념' 카테고리의 다른 글

고전암호기법  (0) 2014.10.20

[빌드 오류] failure during conversion to COFF: file invalid or corrupt

Posted by 백창
2014. 10. 17. 14:18 개발/Open GL
반응형


 개요

 

 Visual Studio 2010 에서 빌드를 할 때 다음과 같은 오류가 발생했을때의 해결방법.


failure during conversion to COFF: file invalid or corrupt



 해결

 

프로젝트 속성에서 Manifest Tool -> input and Output -> Embed Manifest 설정을 NO로 변경해준다.



반응형

'개발 > Open GL' 카테고리의 다른 글

정육면체 그리기  (0) 2014.11.21
도형 그리기 및 이동  (0) 2014.11.03
Menu & SubMenu 생성  (11) 2014.10.09
freeglut API 설치  (0) 2014.09.29
Open GL 설치  (0) 2014.09.12

Menu & SubMenu 생성

Posted by 백창
2014. 10. 9. 21:53 개발/Open GL
반응형


 개요

 

OpenGL에서 마우스 오른쪽 버튼을 누르면 나타나는 메뉴를 만들어보자.



 핵심코드

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
 
void MyMainMenu(int entryID) {
    if (entryID == 1)       exit(0);
 
    glutPostRedisplay();
}
 
/**
* Sphere Size Menu
*/
void SphereSizeMenu(int entryID) {
    if (entryID == 1){
        IsShape = 1;
        IsSmall = true;
    }
    else if (entryID == 2){
        IsShape = 1;
        IsSmall = false;
    }
    glutPostRedisplay();
}
 
 
void MyInit() {
    glClearColor(1.0, 1.0, 1.0, 1.0);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
 
    glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0);
 
    /**
    * Sphere Size Menu
    */
    GLint SpereSizeID = glutCreateMenu(SphereSizeMenu);
    glutAddMenuEntry("Small Sphere", 1);
    glutAddMenuEntry("Large Sphere", 2);
 
 
    /**
    * Show the Menu
    */
    GLint MyMainMenuID = glutCreateMenu(MyMainMenu);
    glutAddSubMenu("Draw Sphere", SpereSizeID);
    glutAddSubMenu("Draw Torus", TorusSizeID);
    glutAddSubMenu("Draw Teapot", TeapotSizeID);
    glutAddSubMenu("Change Color", ChangeColorID);
}


위 코드와 같이 메뉴를 설정해주는 함수를 만들고 마지막 부분에 다시 출력해주는 glutPostRedisplay() 함수를 사용해준다.


 그리고 초기화 과정에서 방금 사용한 함수를 호출하고 메뉴 또는 서브메뉴를 추가해주면 된다.



 결과

 


마우스 오른쪽 버튼을 누르면 다음 메뉴들이 나오고 서브 메뉴도 나온다



변경된 화면

반응형

'개발 > Open GL' 카테고리의 다른 글

정육면체 그리기  (0) 2014.11.21
도형 그리기 및 이동  (0) 2014.11.03
[빌드 오류] failure during conversion to COFF: file invalid or corrupt  (0) 2014.10.17
freeglut API 설치  (0) 2014.09.29
Open GL 설치  (0) 2014.09.12

[vim] 내장 스크립트 설정 (man page 사용)

Posted by 백창
2014. 10. 8. 09:54 리눅스/Ubuntu
반응형


 개요

 

 vim에서 내장 스크립트를 설정하여 man 페이지를 사용해보자



 설정

 

 /etc/vim/vimrc 파일을 다음과 같이 수정한다.




 결과

 


알고 싶은 함수명 위에서 설정파일에 설정해준 명령어 ,ma를 입력하면 다음과같이 man 페이지를 통해 함수의 역할을 쉽게 알 수 있다.



위 설정이 제대로 되지 않으면 exe 명령을 아래와 같이 변경한다.


exe "!man -S ko:2:3:4:5:6:7:8 ".sm

반응형

'리눅스 > Ubuntu' 카테고리의 다른 글

[jdk] 우분투에 java 설치  (0) 2015.02.05
[xrdp] 우분투 GUI 원격제어 설정  (4) 2014.10.07
우분투 한영키  (0) 2014.10.04
우분투 설치 USB 만들기  (0) 2014.10.04
[phpMyAdmin] db관리  (0) 2014.09.03

[xrdp] 우분투 GUI 원격제어 설정

Posted by 백창
2014. 10. 7. 13:49 리눅스/Ubuntu
반응형


 개요

 

 윈도우에서 리눅스, 리눅스에서 리눅스 GUI 원격제어를 xrdp를 사용하여 해보자.



 설치

 




 원격 접속

 

실행 창에서 mstsc를 입력하여 윈도우의 원격제어 프로그램을 사용하여 리눅스에 접속한다.



실패.. 원인 불명의 이유로 다음화면에서 넘어가지 않았다.(xrdp gray screen error)





 문제해결

 

먼저 ubuntu 업그레이드를 하고 다음 프로그램을 설치한다



xsession 설정 파일을 다음 명령으로 생성한다음 xrdp 서비스를 재시작한다.



sudo service xrdp restart


 성공

 



반응형

'리눅스 > Ubuntu' 카테고리의 다른 글

[jdk] 우분투에 java 설치  (0) 2015.02.05
[vim] 내장 스크립트 설정 (man page 사용)  (0) 2014.10.08
우분투 한영키  (0) 2014.10.04
우분투 설치 USB 만들기  (0) 2014.10.04
[phpMyAdmin] db관리  (0) 2014.09.03

[tomcat] 웹서버 설치

Posted by 백창
2014. 10. 4. 23:12 리눅스/서버 구축
반응형


 개요

 

우분투에서 개발용 Tomcat을 설치해보자.



 다운로드

 

http://tomcat.apache.org/download-70.cgi


위 사이트에서 Tomcat을 다운받는다.




 설치

 

 원하는 경로에 압축을 해제한다.



startup 하면





반응형

우분투 한영키

Posted by 백창
2014. 10. 4. 16:33 리눅스/Ubuntu
반응형


 개요

 

 우분투 14.04에서 한영키를 사용하자. 14.04 에서부터 navi 입력기가 패널삽입이 안되는 듯 하다. 그래서 다른 방법을 사용해서 우분투에서 한영 키를 사용하자



 설치

 

dconf-editor를 설치하여 환경변수를 수정해야한다.



 설정


org->gnome->desktop->wm->keybindings 에서 switch-input-source를 ['Hangul']로 변경한다





반응형

'리눅스 > Ubuntu' 카테고리의 다른 글

[vim] 내장 스크립트 설정 (man page 사용)  (0) 2014.10.08
[xrdp] 우분투 GUI 원격제어 설정  (4) 2014.10.07
우분투 설치 USB 만들기  (0) 2014.10.04
[phpMyAdmin] db관리  (0) 2014.09.03
[vim] 에디터 설치  (0) 2014.08.26