본문 바로가기

Java/java 기초

ASCII 코드를 활용한 암호화 & 복호화

실제로 짜려고 보니 굉장히 어려웠다.. 복습..

 

import java.util.Scanner;

public class ex06 {

	public static void main(String[] args) {
		/*
		 * 다음은 알파벳과 숫자를 아래에 주어진 암호표로 암호화하는 프로그램이다. (1)에 알맞은 코드를 넣어서 완성하시오.
		 * 
		 * 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
		 * 
		 * char[] abcCode = { '`','~','!','@','#','$','%','^','&','*',
		 * '(',')','-','_','+','=','|','[',']','{', '}',';',':',',','.','/'};
		 * 
		 * // 0 1 2 3 4 5 6 7 8 9 char[] numCode =
		 * {'q','w','e','r','t','y','u','i','o','p'};
		 * 
		 * 
		 */
		// 암호화
		/*
		 * 함수명 : security parameter: String return String 내용: 일반 문자와 숫자를 암호화하여 돌려주는 함수
		 */
		String src = "abc012";
		String secCode = "";

		secCode = security(src);

		System.out.println("원본: " + src);
		System.out.println("암호화: " + secCode);

		String oriCode = "";

		oriCode = deciphering(secCode);
		System.out.println("복호화된 코드 : " + oriCode);

	}

	private static String security(String src) {
		// TODO Auto-generated method stub
		char[] abcCode = { '`', '~', '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '-', '_', '+', '=', '|', '[',
				']', '{', '}', ';', ':', ',', '.', '/' };

		// 0 1 2 3 4 5 6 7 8 9
		char[] numCode = { 'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p' };
		String resultCode = "";
		// 문자
		for (int i = 0; i < src.length(); i++) {
			char ch = src.charAt(i);
			int chNum = (int) ch;
			if (chNum >= 97 && chNum <= 122) {
				chNum = chNum - 97;
				resultCode = resultCode + abcCode[chNum];
			}
			// 숫자일때
			else {
				chNum = chNum - 48;
				resultCode = resultCode + numCode[chNum];
			}
		}

		return resultCode;
	}

	private static String deciphering(String src) {
		char[] abcCode = { '`', '~', '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '-', '_', '+', '=', '|', '[',
				']', '{', '}', ';', ':', ',', '.', '/' };

		// 0 1 2 3 4 5 6 7 8 9 c
		char[] numCode = { 'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p' };

		String originCode = "";

		for (int i = 0; i < src.length(); i++) {
			char c = src.charAt(i);
			int chNum = (int) c;
			
			// 알파벳 -> 숫자로 변환해야한다.
			int index = 0;
		
			if (chNum >= 97 && chNum <= 122) {
				for (int j = 0; j < numCode.length; j++) {
					if(chNum == (int)numCode[j]) {
						index = j;
						break;
					}
				}
				index = index + 48;
				originCode = originCode + (char)index;
			} else {
				for(int j = 0; j < abcCode.length; j ++) {
					if(chNum == (int)abcCode[j]) {
						index = j;
						break;
					}
				}
				index = index + 97;
				originCode = originCode + (char)index;
			}
		}
		return originCode;
	}

}

 

                                            아스키 코드표(출처: https://shaeod.tistory.com/228)