타원곡선암호시스템(ECC:Elliptic Curve Cryptosystem) 수학적 정의와 예제 소스
본 자료는 5페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
해당 자료는 5페이지 까지만 미리보기를 제공합니다.
5페이지 이후부터 다운로드 후 확인할 수 있습니다.

소개글

타원곡선암호시스템(ECC:Elliptic Curve Cryptosystem) 수학적 정의와 예제 소스에 대한 보고서 자료입니다.

목차

제 1 장 ECC 알고리즘
제 1 절 ECC 알고리즘 정의 및 종류
1.1.1 ECC 알고리즘 정의
1.1.2 ECC 알고리즘 종류
제 2 절 ECC의 수학적 정의
1.2.1 ECC에서 파라미터 생성
1.2.2 ECC에서 덧셈
1.2.3 ECC에서 뺄셈

2장 EC-ElGamal 예제 소스

본문내용

xx_2 = xx - sum_x;
if(xx_2<0)
{
xx_2+=pp;
xx_2 = mod(xx_2,pp);
}
U_clide = Uclide(xx_2,pp);
k= (yy-sum_y)*U_clide;
k = mod(k,pp);
sum_x = (((k*k)%pp)-xx-sum_x);
sum_x = mod(sum_x,pp);
sum_y = (k*(xx-sum_x)-yy);
sum_y = mod(sum_y,pp);
}// 리더에서 kcg 값 구하기 (즉 태그의 ckg값과 같음) 끝
else if(xx==sum_x && (yy != sum_y || (yy+sum_y)%pp ==0))
{
sum_x=xx;
sum_y=yy;
printf("\n항등원 연산 x1값 y1값 : (%d,%d)을 보냅니다.!!\n",sum_x,sum_y);
break;
}
if(sum_x<0)
sum_x+=pp;
if(sum_y<0)
sum_y+=pp;
printf(" %d 번째 연산 값 : (%d,%d) 입니다.!!\n",i,sum_x,sum_y);
}
printf("\n kc1좌표값: (%d,%d).!!\n",sum_x,sum_y);
bab=ecc_end(pp,aa,c2xx,c2yy,sum_x,sum_y);
return yy;
}
long ecc_end(long pp, long aa, long xx, long yy, long c2xx, long c2yy)
{
float p_2, kcg_y;
long yy_2, xx_2, U_clide, k, bab, sum_x, sum_y;
printf("\n 암호화 된 좌표값: (%d,%d).!!\n",xx,yy);
p_2=pp/2.0;
if(c2yy>p_2)
{
kcg_y = c2yy - p_2 ;
c2yy = p_2 - kcg_y ;
}
else if(c2yy {
kcg_y = p_2 - c2yy;
c2yy = p_2 + kcg_y;
}
printf("\n ckg 값의 역원은 (%d,%d)",c2xx,c2yy);
sum_x = c2xx;
sum_y = c2yy;
if(xx==sum_x && yy==sum_y && yy+sum_y!=0) // 리더에서 M 값 복호하기 (즉 태그의 (ckg+M)-kcg 함 )
{
yy_2 = (yy+yy);
yy_2 = mod(yy_2,pp);
U_clide = Uclide(yy_2,pp);
k = (((3*((xx*xx)%pp))+aa)*U_clide);
k= mod(k,pp);
sum_x = k*k-(2*xx);
sum_x = mod(sum_x,pp);
sum_y = k*(xx-sum_x)-yy;
sum_y = mod(sum_y,pp);
}
else if(xx != sum_x)
{
xx_2 = xx - sum_x;
if(xx_2<0)
{
xx_2+=pp;
xx_2 = mod(xx_2,pp);
}
U_clide = Uclide(xx_2,pp);
k= (yy-sum_y)*U_clide;
k = mod(k,pp);
sum_x = (((k*k)%pp)-xx-sum_x);
sum_x = mod(sum_x,pp);
sum_y = (k*(xx-sum_x)-yy);
sum_y = mod(sum_y,pp);
}// 리더에서 M 값 복호하기 (즉 태그의 (ckg+M)-kcg 함) 끝
else if(xx==sum_x && (yy !=sum_y || (yy+sum_y)%pp ==0))
{
sum_x=xx;
sum_y=yy;
}
if(sum_x<0)
sum_x+=pp;
if(sum_y<0)
sum_y+=pp;
printf("\n\n==================================메세지 복호화 ==============================\n\n");
printf(" 최종 밥의 M 값 c2-kc1(kcg) : (%d,%d) 입니다.!!\n",sum_x,sum_y);
printf("\n\n==============================================================================\n\n");
return yy;
}
long mod(long a, long p)
{
a = a - ((a/p)*p);
return a ;
}
long Uclide(long inverse, long mod)
{// 공약수(역원) 구하기 sub routine
long p1=mod;// 법 p 에 대한 역원구하기
long x1=1; long y1=0;// 유클리트 알고리즘
long x2=0; long y2=1;// 유클리트 알고리즘
long ii=0;
long r1, quot1, e;
quot1 = 0 ;
while(inverse!=0)
{
r1 = p1-((p1/inverse)*inverse); // size(p2) 와 p1 의 공약수 구하기
quot1 = p1/inverse;// 몫
if(ii%2 ==0)
{
y1-=(y2*quot1);
}// p2와 곱하는 값
else
{
y2-=(y1*quot1);
} // p2와 곱하는 값
ii++;
p1=inverse; // 최종 p1이 공약수
inverse=r1;
}
if(ii%2 ==0)
{
e=y1;
}
else
{
e=y2;
} // this2 는 size(p2)의 역원(mod p) 최종 결과
if(e<0)
{
e+=mod;
}// 양수로 만들기
return e;
}
---------------------------소 스 끝----------------------------
프로그램에 대한 문의는 이메일로 접수하나 답변은 보장하지 못한다. 본 문서는 글자 하나하나 정성들여 작성하였으며 인용문을 제외한 모든 정리(그림, 수식, 설명 등)는 문서 제작자 스스로 작성하였다. 물론 과제용으로 수정하여 제출 가능 하나 본 문서는 암호학에 관심이 깊은 학생들의 기초 자료로서 가치를 가지길 바란다. 또한 본 문서는 인터넷 어디에도 쉬운 ECC 소스가 공유되지 않아 작성한 문서이다. 개인 블러그나 홈페이지를 통해 공개할 예정도 있으나 무분별하게 공유되는 것은 제작자라면 모두 원치 않는 일이므로 레포트샵을 통해 공개하는 것은 이해하길 바란다.

키워드

  • 가격3,000
  • 페이지수16페이지
  • 등록일2008.08.07
  • 저작시기2008.8
  • 파일형식한글(hwp)
  • 자료번호#475578
본 자료는 최근 2주간 다운받은 회원이 없습니다.
다운로드 장바구니