본문 바로가기

CRC

[대학원 과제] Extended Euclidean Algorithm(확장 유클리드 호제법)을 이용한 모듈러 역원 구하기 with Java 앞의 포스팅에 앞서서 확장 유클리드 호제법을 이용한 모듈러 역원 구하는 방법을 코드화하였습니다. 해당 방법을 코드화 하여 구현하였으며 과제로 나온 문제 예시는 다음과 같습니다. 이를 Java로 코드화하였을 때, 결과가 올바르게 나온 것을 확인할 수 있습니다. 코드는 아래 Repository에 담아 두었습니다. https://github.com/ahrizwell/myRepository/blob/java/extendedEuclideanInverse.java ahrizwell/myRepository Everything I did. Contribute to ahrizwell/myRepository development by creating an account on GitHub. github.com 물론 연산속도.. 더보기
[대학원 과제] 모듈러(Modulo, %)의 역원 구하는 프로그램 with Java 이번에는 모듈러의 역원을 구하는 문제가 과제로 나왔습니다. 원래 모듈로의 역원을 구하기 위해서는 1) 유클리드 호제법, 그리고 이를 확장한 2) Extended 유클리드 호제법, 그 후 3) Multiplicative Inverse 를 배우고 구하는 방식을 권고(?)하고 있습니다. 하지만 생각해보니 단순히 모듈러의 역원을 구하는 것이라면, 위 방식을 응용한 방법을 사용하는 것이 좋다고 생각하여 알고리즘들을 찾아보았습니다. 원래 네트워크 암호학 배울 때 다 그렇지만 시험기간이 다가올수록 꼼수(?)를 사용하여 한방에 구할 수 있는 공식 혹은 알고리즘을 만들어 시험장에 가는게 정석(?)이기 때문이죠. 참고로, 구하는 속도 측면에서는 확장된 유클리드 호제법을 이용한 Multiplicative Inverse를 이.. 더보기
[네트워크] 통신 오류 검출 통신 오류 검출 통신을 하다 보면 여러 가지 이유로 비트 에러가 발생한다. 이 때, 수신 측에서 보낸 데이터가 정확하게 전달이 되었는지를 확인하는 방법이 통신 오류 검출이다. 통신 오류 검출에는 패리티 비트 검사, 블록 합 검사, 순환 중복 검사가 있다. 1) 패리티 비트 검사 패리티 비트 검사는 전송하는 데이터마다 패리티 비트를 하나씩 추가하여 비트가 1인 데이터의 개수가 짝수인지 홀수인지로 판별하는 방법을 말한다. 인코딩(encoding)하는 방법은 1) 짝수 패리티 방식의 경우 1인 비트의 개수를 짝수개로 맞춰주면 되고 2) 홀수 패리티 방식의 경우 1인 비트의 개수를 홀수개로 맞춰주면 된다. 만약 7비트의 데이터를 전송할 때 앞에 한 비트를 추가하여 8비트를 만든 후 1(Pb) 0 1 0 1 0 .. 더보기