본문 바로가기

학과 공부/암호모듈4

4/17 키 생성 및 복호화 속도가 문제!지수연산이 문제였다!지수연산 내부를 봤더니, 곱셈, 제곱=>KOA로 좀 줄일 수 있다!, 모듈러감산inverse는 하지 말자mul과 mod를 줄여보자mod가 더 오래걸림!곱하기 1 mod 8~30사이를 보통 생각해준a다! *montgomery reduction 2018. 4. 18.
4/17 지금까지 한거 정리 mpz사용법 _mp_alloc: 할당된 배열의 갯수_mp_size: 사용갯수*부호_mp_d: 배열의 포인터 1) _mpz_t A 로 선언한다2) _mpz_init(A)로 init을 해준다. init을 하면 _mp_alloc은 1로, _mp_size 0으로, _mp_d도 설정된다! 3)_mp_d[0]에 넣어주고_mp_size를 바꾸어준다!_mp_alloc도 바꾸어주어야 한다! ormpz_set_str(a, "ffff666699999999aaaaaaaa", 16);4)mpz_clear(A); mpx_init2(A,1500);alloc이 1500비트로!mpz_urandomm(m, state, n);//n보다 작은 messagempz_urandmob(p, state, size)mpz_probab_prime_p(.. 2018. 4. 18.
4/3 큰 정수 a,b 더하기c=a+b(c,a,b)a>b 로 구현!a-b: 부호가 없는 절댓값을 기본으로 구현|a|>=|b| carry a4 a3 a2 a1 a0+ b2 b1 b0---------------------c5 c4 c3 c2 c1 c0 c0=a0+b0carry=c0=2^32a1+b1>=2^32-1a1>=(2^32-1)-b1}if(carry)carry=a1>=(~b1);else carry=c1 add_new(c,a,b)+ - => sub_new(c,a,b)- + => sub_new(c,b,a)=>sub_new(c,a,b)*(-1)- - => add_new(c,a,b) * -1 a-b+ +=>sub_new(c,a,b)+ - =>add_new(c,a,b)- + =>add_new(c,a,b)*-1- - =.. 2018. 4. 3.
3/27 #include #include #include "gmp.h"#include clock_t elapsed; float sec;#define START_WATCH \{\elapsed = -clock(); \}\ #define STOP_WATCH \{\elapsed += clock(); \sec = (float)elapsed / CLOCKS_PER_SEC; \}\ #define PRINT_TIME(qstr) \{\printf("\n[%s: %.5f s]\n", qstr, sec); \}\ void RSA_speed_test(int RSA_SIZE, gmp_randstate_t state) {//RSA Key Generation//공개키 : n, e//비밀키 : p,q,dmpz_t n, e, p, q, d;m.. 2018. 3. 27.