[FORTRAN] 암호생성기, 암호해독기 알고리즘
본 자료는 3페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
해당 자료는 3페이지 까지만 미리보기를 제공합니다.
3페이지 이후부터 다운로드 후 확인할 수 있습니다.

소개글

[FORTRAN] 암호생성기, 암호해독기 알고리즘에 대한 보고서 자료입니다.

목차

△ 아이디어

1.암호생성기
a.알고리즘
b.설명
2.암호해독기
a.알고리즘
b.설명

※결과
※고찰

본문내용

HARACTER l(100)
WRITE(*,*) \'Enter the Password~!!\'
READ(*,10) I
10 FORMAT(I15)
N = 1
ICOUNT = 1
20 N = N*10
KK = I/N
IF(KK.NE.0) THEN
ICOUNT = ICOUNT+1
GOTO 20
ELSE
END IF
DO LLL = 1,ICOUNT
IF(LLL-LLL/3*3.EQ.0) THEN
KIP(LLL) = JARI(LLL,I)
ELSE IF(LLL-LLL/3*3.EQ.2) THEN
KIP(LLL) = JARI(LLL,I)*10
ELSE IF(LLL-LLL/3*3.EQ.1) THEN
KIP(LLL) = JARI(LLL,I)*100
ELSE
END IF
END DO
CHAR_COUNT = ICOUNT/3
DO III = 1,CHAR_COUNT
ICharc(III) = KIP(3*III-2)+KIP(3*III-1)+KIP(3*III)
l(III)=ACHAR(ICharc(III))
END DO
WRITE(*,30) \"Following converted Password to the Word!\"
WRITE(*,*) l
30 FORMAT(///A/)
STOP
END
FUNCTION JARI(NN,IPE)
IF(IPE/10**(NN).EQ.0) THEN
IPE1 = IPE-IPE/(10**(NN-1))*(10**(NN-1))
JARI = (IPE-IPE1)/10**(NN-1)
ELSE
IPE1NOP = IPE-IPE/(10**NN)*(10**NN)
IPE1 = IPE-IPE/(10**(NN-1))*(10**(NN-1))
JARI=(IPE1NOP-IPE1)/10**(NN-1)
END IF
END FUNCTION JARI
b. 설 명
위에서 생성한 암호를 원문으로 해독할 수 있는 암호해독기의 알고리즘입니다.
암호를 입력하면은 암호의 뒷부분부터 3글자씩 하나의 정수를 만들어 그것을 문자화 합니다.
우선 암호를 입력받으면 암호의 총 자리수를 알아야 합니다.
N = 1
ICOUNT = 1
20 N = N*10
KK = I/N
IF(KK.NE.0) THEN
ICOUNT = ICOUNT+1
GOTO 20
ELSE
END IF
암호가 예를들어 6자리의 123456라는 숫자라면은 6자리를 벗어나는 1000000 7자리의 10의 7제곱을 나누어 주면은
0이 되는 것을 이용!
N=N*10 을 반복하면서 I(암호)/N 이 0 이 되기전가지 ICOUNT(카운트)를 세어 줍니다. 여기에서 ICOUNT 는 암호의 자리수를 나타내게 됩니다.
DO LLL = 1,ICOUNT
IF(LLL-LLL/3*3.EQ.0) THEN
KIP(LLL) = JARI(LLL,I)
ELSE IF(LLL-LLL/3*3.EQ.2) THEN
KIP(LLL) = JARI(LLL,I)*10
ELSE IF(LLL-LLL/3*3.EQ.1) THEN
KIP(LLL) = JARI(LLL,I)*100
ELSE
END IF
END DO
위의 DO 문은 KIP 배열에 JARI(알고자하는 자릿수, 정수)의 함수를 이용하여 끝에서 부터 차례대로(암호는 원래 나온 번호를 뒤집었으니깐) 자릿수를 입력합니다.
여기에서 IF문은 3자리의 숫자들이 하나의 정수가 되어야 함으로 100의자리 숫자에 해당하는 경우에 100을 곱하고
10의 자리 숫자에 해당하는 경우는 10을 곱하여 입력되는 것으로 나왔다.
예를들어
123456789 의 암호를 생각할 때 원래의 번호는 987654321 이고,
원문으로 해독은
987(아스키 변환 = 알파벳 한 개),654(아스키 변환 = 알파벳 한 개),321(아스키 변환 = 알파벳 한 개)
이런식으로 해독이 되어야 합니다. 987이 되기 위해서는 9*100+8*10+7 이 되어야 합니다. 그래서 9(1번째)부터 1(9번째)까지 3으로 나눈 나머지가 1이 되면은 100을 곱하고, 2가 되면은 10을 곱하게 됩니다.(100과 10을 곱하기 위한 제어는 DO에 LLL을 3으로 나눈 나머지의 값으로 했습니다.)
LLL=1번째 9(암호 자릿수) LLL을 나눈 나머지가 1이므로 9*100
LLL=2번째 8(암호 자릿수) LLL을 나눈 나머지가 2이므로 8*10
LLL=3번째 7(암호 자릿수) LLL을 나눈 나머지가 0이므로 8
LLL=4번째 8(암호 자릿수) LLL을 나눈 나머지가 1이므로 8*100
LLL=5번째 6(암호 자릿수) LLL을 나눈 나머지가 2이므로 8*10
LLL=6번째 5(암호 자릿수) LLL을 나눈 나머지가 0이므로 8
.
,
,
CHAR_COUNT = ICOUNT/3 <==ICOUNT는 암호의 자리수이니까 알파벳은 암호의 자리수/3만큼의 개수가 나온다.
DO III = 1,CHAR_COUNT
ICharc(III) = KIP(3*III-2)+KIP(3*III-1)+KIP(3*III)
l(III)=ACHAR(ICharc(III))
END DO
위의 DO문은 이렇게 입력받은 KIP 배열들을 3개씩 하나로 ICharc라는 배열에 넣는 과정입니다.
KIP(1) = 9*100, KIP(2) = 8*10, KIP(3) = 7 이 값을 다 더하여 ICharc(1) = 987 로 저장합니다.
다시 이 저장한 정수값을 아스키문자로 변환하는 ACHAR를 이용하여 문자배열인 l 배열에 알파벳 하나씩 저장합니다.
이렇게 저장한 l 문자배열을 전체출력하면은 암호에 해당하는 문자가 출력됩니다.
※ 결 과
암호생성기에서 생성된 암호가 암호번역기에서 똑같은 원문으로 번역이 되었다.
문자 Cat을 입력하였을 때 611790760 이라는 암호가 나오는 캡쳐화면
611790760의 암호를 넣었을 때 Cat으로 원문이 번역되는 캡쳐화면
※ 고 찰
a. 알파벳만이 암호기에 적용된다.
b. 알파벳 한 단어에 3자리수에 정수가 필요하기 때문에, 암호가 너무 길다.
c. 암호보안을 위해 아스키코드 번역으로 나온 번호를 거꾸로 했는데 아스키 코드를 아는 사람은 암호해독이 가능하다.
d. 간단한 단어, 문장 밖에는 암호화 할 수 없다.
e. 암호생성기와 암호번역기의 알고리즘에 일관성이 없어 알고리즘 분석이 어렵다.(암호생성기와 암호번역기 알고리즘 만든 시기가 달랐기 때문)
  • 가격1,500
  • 페이지수10페이지
  • 등록일2005.10.04
  • 저작시기2005.10
  • 파일형식한글(hwp)
  • 자료번호#314760
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니