모든지 기록하자!

[Java] 암호화 / 복호화 본문

Java

[Java] 암호화 / 복호화

홍크 2021. 5. 13. 09:33
728x90

다음은 알파벳과 숫자를 아래에 주어진 암호표로 암호화하는 프로그램이다. 

a b c d e f g h i j k l m n o p q r s t u v w x y z

` ~ ! @ # $ % ^ & * ( ) - _ + = | [ ] { } ; : , . /

 

0 1 2 3 4 5 6 7 8 9

q w e r t y u i o p

 

 

class Array05 {
	public static void main(String[] args) {
		// a ~ z
		char[] abcCode ={
				 '`','~','!','@','#','$','%','^','&','*',
				 '(',')','-','_','+','=','|','[',']','{',
				 '}',';',':',',','.','/'};
				
		// 0~9까지 표현해서 암호화 하는 코드  0=q, 1=w ....~
		char[] numCode = {'q','w','e','r','t','y','u','i','o','p'};
			
		String src = "abc123";
		String result = ""; //결과값 받을 변수
			
			
		for(int i=0; i < src.length();i++) {  // 문자열 src의 문자를 charAt()으로 하나씩 읽어서 
        					     //변환 후 result에 저장
		// 파라미터 값으로 받은 문자열을 아스키코드 값으로 치환
		char c = src.charAt(i);
		int chNum = (int)c;
			
		//받은 문자가 a~z사이라면 ( 알파벳의 경우 )
		if(chNum >= 97 && chNum <= 122) {
		// a=97 ~ z=122 이라 97빼면 0~25를 얻음 ( 97~ 122 - 97 => 0~25 )
		chNum = chNum-97;
		result = result + abcCode[chNum]; // 암호화를 위한 배열에 해당 위치에 있는 
        					 //char형으로 바꾼후 String에 합치기
		}else if(chNum >=48 && chNum <=57) { // 숫자의 경우
		// 0= 48  ~ 9=57 이라  48을 빼면 0~10 을 얻음
		chNum = chNum-48;
		result = result + numCode[chNum];
	}
			
}
		System.out.println("src : "+src);
		System.out.println("result : "+result);
			
		// 복호화
		String originalCode = "";
		// result:`~!wer
		for (int i = 0; i < result.length(); i++) {
			char c = result.charAt(i);  
			int asc = (int)c;
				
		// 		암호       -> 원본
		// result의 알파벳 -> 숫자 
		int index = 0; // 저장할 변수 
		if(asc >=97 && asc <= 122) {
			for (int j = 0; j < numCode.length; j++) {
				if(c == numCode[j]) { // c == 'w'와 같을때
					index = j;
					break; // 끝까지 찾을 필요가 없기때문에 원하는 값을 찾을경우 
                   		              // 바로 반복문 탈출
				}
			}
			index = index + 48;  // 숫자에 해당하는 ASCII 코드 값으로 설정
			originalCode = originalCode + (char)index; // 아스키 코드값을 문자로 변경후 추가
		}
		//	 	   암호     -> 원본
		// result의 기호 -> 알파벳
				else {
			for (int j = 0; j < abcCode.length; j++) {
				if(c == abcCode[j]) {
					index = j;
					break;
				}
			}
			index = index + 97;
			originalCode = originalCode + (char)index;
		}
	}
			System.out.println("복호화 : "+originalCode);
} 
	
} 
//[실행결과]
//src:abc123
//result:`~!wer

 

 

 

728x90
Comments