008. 테스트: 덧셈, 증가 테스트 테스트는 프로그래밍에 있어 너무나 중요한 부분이다. 특히 알고리즘이 관련된 복잡한 프로그래밍에 있어서는, 코드를 눈으로만 읽어서 그 결과값을 예측하는 것이 한계가 있기에, 여려 경우의 수를 고려하여 직접 실행결과를 확인해보는 것이 매우 중요하다. 따라서, 작성하는 .. 암호화프로그래밍/(Old)C-BIGINT 2013.07.30
007. 증가(increse) 2.2 증가(increse) 1만큼 증가 시키는 것을 구현해보자. 1 증가하는 것은, 앞에서 작성한 add함수를 써도 될 것이다. 즉, increse(A) = add(A,1,A) (마찬가지로 1 감소하는 것은 decrese함수를 나중에 구현할 텐데, 이것도 subtract함수를 써도 되긴 한다.) 그러나, 1증가/감소는 빈번하게 일어나는 연산이고 .. 암호화프로그래밍/(Old)C-BIGINT 2013.07.29
부록3. 도우미 함수들 이 글에서 다루고 있는 메인 주제인 큰 수에 대한 연산 및 암호화 연산에서 사용되는 대표적인 도우미 함수들에 대해서 설명한다. 일반적인 도우미함수들은 doumi.h에 정의하고 doumi.c에 구현할 것이다. 이 때, 함수명은 표준 C라이브러리에서 사용되는 함수들과의 혼돈을 피하기 위해서 "do_.. 암호화프로그래밍/(Old)C-BIGINT(부록) 2013.06.25
부록2. Visual Studio를 이용한 C 프로그래밍 예제 여기서는 Visual Studio 2010을 이용해서 C 프로그래밍 하는 기초적인 방법을 설명한다. Visual Studio는 주로 C# 혹은 C++ 프로그래밍을 하는데 사용되는데, C 프로그래밍에도 (당연히) 사용될 수 있다. 여기서는 2.1에서 소개한 큰 수에 대한 덧셈함수를 구현하고 테스트하는 것을 예제로해서, Visual .. 암호화프로그래밍/(Old)C-BIGINT(부록) 2013.06.20
006. 덧셈(add) 2. 기본 연산 2.1 덧셈 큰 수에 대한 덧셈을 구현해 본다. 앞장에서 계속 얘기한 바와 같이 '큰 수'란 프로그래밍 언어에서 기본으로 제공하는 가장 큰 자료형으로 표현할 수 없는 큰 수이다. 그리고 이 '큰 수'는 기본 자료형의 배열로서 표현하기로 했다. 이 큰 수에 대한 덧셈이라는 것은, .. 암호화프로그래밍/(Old)C-BIGINT 2013.06.20
부록1. 각 언어의 자료형별 크기 C, C++, Java의 자료형태에 따라 할당되는 메모리크기를 살펴보면 아래 표와 같다. [자료크기 단위: Bytes] 자료형태 Standard C C++(Windows 32bit) Java char 1 1 1 short 2 2 2 int 2 or 4 4 4 long 4 4 8 long long 8 8 - float 2 or 4 4 4 double 4 or 8 8 8 boolean 1 1 1 대표적인 자료형태만을 본 것인데, Java의 경우 char(1) < short(2.. 암호화프로그래밍/(Old)C-BIGINT(부록) 2013.06.19
005. 큰 수에 대한 프로그래밍 1.1 프로그래밍 앞 장에서 큰 수에 대해서 왜 별도의 프로그래밍을 해야하는지 살펴봤다. 별도라는 것은, 프로그래밍 언어에서 지원하는 기본 자료형과 연산자를 사용하지 않고 새로운 표현방법과 연산함수들을 만들어야 함을 의미한다. (Java에서는 BigInter라는 클래스를 기본으로 제공해.. 암호화프로그래밍/(Old)C-BIGINT 2013.06.19
004. 큰 수 1. 큰 수(數)에 대한 프로그래밍 1.1 큰 수 컴퓨터에서의 수는 메모리에 저장되어 있는 일련의 비트 정보이며, 프로그래밍을 할 때는 해당 컴파일러에 약속된 데이터 타입에 따라 그 크기(몇 바이트 메모리가 할당될 것인지)와, 소수점이 있는 수인지, 그냥 정수형태인지 등이 결정된다. 예.. 암호화프로그래밍/(Old)C-BIGINT 2013.06.19
003. 목차 (not fixed yet) 목차 1. 큰 수에 대한 프로그래밍 1.1 큰 수 1.1 프로그래밍 2. 기본 연산 2.1 덧셈 2.2 뺄셈 2.3 증가/감소 2.3 곱셈 2.5 나눗셈 2.6 Modulus 2.7 최대공약수 3. 암호화 연산 3.1 난수 3.2 RSA 3.3 AES 3.4 Sha256 4. 암호화 응용 4.1 암호화, 복호화 4.2 서명, 검증 5. 응용 프로그래밍 5.1 BigNum Caculator 5.2 Open PGP 암호화프로그래밍/(Old)C-BIGINT 2013.06.19
002. 이 글을 읽는데 필요한 사항 이 글을 읽기 위해 필요한 사항 이 글은 알고리즘 과목을 한 학기 정도 수강했고, 암호학 개론을 공부했고, C나 Java, C# 중 최소 한 가지 이상의 언어를 사용할 수 있는 사람이면 편하게 읽을 수 있을 것이다. 그렇지 않다면, 최소한 프로그래밍에 대한 기초는 있어야 큰 무리 없이 글을 읽어.. 암호화프로그래밍/(Old)C-BIGINT 2013.06.17