정보보안 시간에 레포트로

C 언어로 작성한 

S-DES 암 복호화 프로그램



S-DES.exe


'Study > C Language' 카테고리의 다른 글

serial commutnication escape charater  (0) 2014.04.24
짝맞추기 게임  (0) 2012.09.18
베스킨 라빈스 31 게임  (6) 2012.04.27
해밍코드  (0) 2012.04.12

Serial 통신에서 ESC(escape) 문자열을 통신하는것

아스키 코드로 int 27 을 전송하거나

문자열로 "\x1B" 을 전송

'Study > C Language' 카테고리의 다른 글

S-DES  (0) 2015.08.11
짝맞추기 게임  (0) 2012.09.18
베스킨 라빈스 31 게임  (6) 2012.04.27
해밍코드  (0) 2012.04.12

이전에 씨언어 콘솔로 만든 짝맞추기 게임입니다.

터보씨를 이용해서 얼추 잘 돌아가게 만들어 보았던 기억이다.

실행파일을 찾은김에 블로그에 올려본다.

ㅋㄷㅋㄷ 그때는 정말 열심히 만들었었던 기억이..

 

 

Wook's 짝맞추기_게임.exe

'Study > C Language' 카테고리의 다른 글

S-DES  (0) 2015.08.11
serial commutnication escape charater  (0) 2014.04.24
베스킨 라빈스 31 게임  (6) 2012.04.27
해밍코드  (0) 2012.04.12

 

BaskinRobbins.exe

C언어로 작성 해보았던 베스킨 라빈스 31 게임이다.

31을 외치면 지는 게임으로, 컴퓨터가 좀 똑똑하다...

ㅎㅎ

'Study > C Language' 카테고리의 다른 글

S-DES  (0) 2015.08.11
serial commutnication escape charater  (0) 2014.04.24
짝맞추기 게임  (0) 2012.09.18
해밍코드  (0) 2012.04.12

해밍코드_데이터전송값_구하기.exe

컴퓨터 구조론 시간에 했던.

해밍코드를 이용한 데이터 전송 비트 값을 구하는 프로그램

 

해밍 코드란?

 

해밍코드는 에러정정 코드(error correction code) 중 가장 간단한 형태의 코드로 한 비트에 에러를 검출하고 자동으로 정정까지 해주는 코드이다. 패리티 비트를 가지며 문자 코드의 경우 4개의 여분 비트를 가지고 있다.

 

관계식 (해밍 코드를 만드는식)

2의p승 >= m + p + 1

p : 페리티 비트의 수

m : 정보 비트의 수

 

페리티 비트 수는 각각 데이터 사이에 들어가서 전송중 애러가 있는지를 검출한다 2의 지수승 자리에 들어가서 검출함

 

2의 1승 2의 2승 2의 3승 2의 4승 .. 이런식으로 들어가므로

 

1번째자리 2번째자리 4번째자리 8번째 자리에 들어감

 

전송할 데이터가

1 0 1 1 0 1 1 1   이라면

관계 식에 의해서 m = 8 이되고 p 는 4가 된다. 

 

16 >= 8 + 4 + 1 이므로

 

여기서 이제 페리티비트수를 집어넣어주면된다

 

p1  |  p2  |  1  |  p3 |   0 |   1  |  1  |  p4  |  0  |  1  |  1  |  1    이렇게 p의 자리에 0과 1중의 숫자를 계산해서 넣으면 완료

 

여기서 짝수 페리티랑 홀수 페리티가 있는데, 두 페리티는 반대 개념이며, 짝수 페리티만 설명 해 보겠다.

 

p1  의 값은 1, 3, 5, 7, 9, 11, 13 번째 비트를 점검하여 1의 개수가 짝수 개가 되도록 하면된다.

여기서는 p1, 1, 0, 1, 0, 1 로써 p1을 제외 하고 1의 갯수가 3개 이므로 짝수 페리티비트를 만들려면  p1의 값이 1이 되어야한다.

 

p2의 값은 2, 3, 6, 7, 10, 11, 14 번째 자리를 점검하고

여기서는 p2, 1, 1, 1, 1, 1  14번자리는 없음

이므로 1이 5개가 되고 짝수페리트를 맞추려면 역시 p2가 1이 되어야 6개로 짝수개가 된다.

 

여기서 점검할 자리를 결정하는것은 2진수 의 비트수를 검사하는것인데

 

예제 데이터(p1,p2,1,p4,0,1,1,p8,0,1,1,1)의 순서로 보면

p1의 경우 1번째 자리이므로 이진수로 0001

p2의 경우 2번째 자리이므로 이진수로 0010

 1 의 경우 3번째 자리이므로 이진수로 0011

p4의 경우 4번째 자리이므로 이진수로 0100

 0 의 경우 5번째 자리이므로 이진수로 0101

 1 의 경우 6번째 자리이므로 이진수로 0110

 1 의 경우 7번째 자리이므로 이진수로 0111

p8의 경우 8번째 자리이므로 이진수로 1000

 0 의 경우 9번째 자리이므로 이진수로 1001

 1 의 경우10번째 자리이므로 이진수로 1010

 1 의 경우11번째 자리이므로 이진수로 1011

 1 의 경우12번째 자리이므로 이진수로 1100

 

이 된다. 여기서 p1을 결정할때 확인해봐야하는 요소는 이진수로 끝자리가 1인것,  p2를 결정할때 확인해봐야하는 요소는 이진수로 끝에서 두번째자리가 1인 것 p4를 결정할때 확인해봐야하는 요소는 이진수로 끝에서 3번재자리가 1인것 이런식으로 확인을 하면된다.

 

 

그렇게 해서 완성된 해밍코드는 (짝수페리티)

1(p)  1(p)  1  1(p)  0  1  1  1(p)  0  1  1  1

를 전송한다.

만약 전송비트가 위와같으나 수신비트가

1(p)  1(p)  1  1(p)  0  0(오류)  1  1(p)  0  1  1  1 

이렇다면 수신측에서 검사를 통하여 오류를 잡아낼수있다.

패리티 자리로 검사를 하는데

p1 = 1, 3, 5, 7, 9, 11 번의 자리의 1의 개수를 검사한다. 짝수개이므로 0

p2 = 2, 3, 6, 7, 10, 11번의 자리의 1의 개수를 검사한다. 홀수개이므로 1

p4 = 4, 5, 6, 7, 12번의 자리의 1의 개수를 검사한다. 홀수개 이므로 1

p8 = 8, 9, 10, 11, 12번의 자리에서 1의 개수를 검사한다. 짝수개 이므로 0 이된다.

 

순서대로 나열하면

 

p8   p4  p2  p1

0     1    1    0

이므로 (0110)이진수 는 6을 나타냄

 

6번째 자리의 숫자가 오류라는 판정임 따라서 6번의 0 을 1로 정정해주면 오류가 해결된다.

'Study > C Language' 카테고리의 다른 글

S-DES  (0) 2015.08.11
serial commutnication escape charater  (0) 2014.04.24
짝맞추기 게임  (0) 2012.09.18
베스킨 라빈스 31 게임  (6) 2012.04.27

+ Recent posts