본문 바로가기
학과 공부/암호모듈

4/17 지금까지 한거 정리

by sonysame 2018. 4. 18.

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도 바꾸어주어야 한다!


or

mpz_set_str(a, "ffff666699999999aaaaaaaa", 16);

4)

mpz_clear(A);




mpx_init2(A,1500);alloc이 1500비트로!

mpz_urandomm(m, state, n);//n보다 작은 message

mpz_urandmob(p, state, size)

mpz_probab_prime_p(p, mr_itr)

mpz_gcd(n, p, e);

mpz_mul(n, p, q);

mpz_invert(d, e, n);

mpz_add(plus, a, b);

mpz_sub(minus, a, b);

mpz_powm(c, m, e, n);

mpz_mul_2exp(a1__b1,a1__b1, 2048);//2^2048곱해주기!


바꿔주기! mpz_set(big_a, a);

mpz_realloc2(c, (i << 5));

mpz_cmpabs(a, b) >= 0

Return a positive value if |op1| > |op2|, 

zero if |op1| = |op2|, 

or a negative value if |op1| < |op2|.



START_WATCH;

STOP_WATCH;

PRINT_TIME("~~");


state사용법

1) gmp_randstate_t state;

2) gmp_randinit_default(state);


KOA에서 쪼개기

for (i = 0; i < 32; i++)

{

a1->_mp_d[i] = a->_mp_d[i + 32];

a0->_mp_d[i] = a->_mp_d[i];

b1->_mp_d[i] = b->_mp_d[i + 32];

b0->_mp_d[i] = b->_mp_d[i];

}





질문

mpz_ptr

mpz_t

mpz_srcptr

차이점!




'학과 공부 > 암호모듈' 카테고리의 다른 글

4/17  (0) 2018.04.18
4/3  (0) 2018.04.03
3/27  (0) 2018.03.27