일회용 암호를 이용한 암호화 복호화 프로그램(c언어사용)
- 최초 등록일
- 2009.02.17
- 최종 저작일
- 2008.11
- 8페이지/ 한컴오피스
- 가격 1,000원
소개글
c언어를 사용하여 1회용 암호를 구현하였습니다.
보안이나 암호학 수업의 기본적인 알고리즘 입니다.
평문을 입력받아 2진수로 변환하고, 키 값을 입력받아 역시 2진수 변환합니다.
변환된 2진수값을 XOR 연산을 수행하여 암호문을 생성합니다.
생성된 암호문은 다시 복호화 키를 입력받아 XOR 복호화를 수행하여 복호문을 출력합니다.
같은 값으로 두 번의 XOR를 수행하면 그 값은 사라지고 원래의 값만 남는 원리를 이용했습니다.
목차
1.간략설명
2.소스분석
3.소스실행결과
본문내용
//=============암호화 과정=================
//평문을 바이너리로 변환
printf("nn============2진수 변환된 평문====================n");
for(i=0;i<Mlen;i++) //평문의 길이만큼 루프를 돈다
{
AM[i]=(int)M[i]; //평문 M을 int로 형변환 시켜 저장한다. 아스키값이 저장된다.
for(j=0;j<8;j++) //10진수를 2진수로 변환하는 루프이다.
{
eM[i][j] = (AM[i] % 2); //2로 나눈 나머지를 저장
AM[i]= AM[i]/2; //2로 나눈다
}
printf(" ");
//배열 내용을 출력한다. 우리가 보는 숫자와 배열에 저장된 숫자는 역순이므로 반대로 출력
for(j=7;j>=0;j--)
{
printf("%d",eM[i][j]);
}
}
printf("\n\n============2진수 변환된 암호키==================\n");
//암호키를 바이너리로 변환. 위의 평문 변환하는 과정과 같다.
for(i=0;i<keylen;i++) //암호키의 길이만큼 루프를 돈다
{
Akey[i]=(int)key[i]; //아스키값으로 저장한다
for(j=0;j<8;j++) //10진수를 2진수로 변환하여 저장
{
ekey[i][j] = (Akey[i] % 2);
Akey[i]= Akey[i]/2;
}
printf(" ");
for(j=7;j>=0;j--)
{
printf("%d",ekey[i][j]);
}
}
//암호문 만들기. 평문과 암호문의 XOR 연산 수행
printf("\n\n*===========2진수 암호문 출력===============*\n");
참고 자료
없음