Daily coding

Java Basic : day 6 - Example 06 : 암호화/복호화 메소드 구현하기 본문

Language/Java_basic

Java Basic : day 6 - Example 06 : 암호화/복호화 메소드 구현하기

sunnnkim 2019. 11. 26. 18:25
package day6;

import java.util.Scanner;

public class Ex06_CodingDecoding {

	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'};
		
		
	 */
		String str = "abc12";
		System.out.println("암호화 전 : " + str);
		String encodeStr = encode(str);
		System.out.println("암호화 후 : " + encodeStr);
		System.out.println("복호화 전 : " + encodeStr);
		String decodeStr = decode(encodeStr);
		System.out.println("복호화 후 : " + decodeStr);
		System.out.print(">> ");
		Scanner sc = new Scanner(System.in);
		String ip = sc.next();
		System.out.println("암호화 전 : " + ip);
		String encodeStr1 = encode(ip);
		System.out.println("암호화 후 : " + encodeStr1);
		System.out.println("복호화 전 : " + encodeStr1);
		String decodeStr1 = decode(encodeStr1);
		System.out.println("복호화 후 : " + decodeStr1);
		
	}
	static String encode(String str) {
		
		// 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
		// ` ~ ! @ # $ % ^ & * ( ) - _ + = | [ ] { } ; : , . /
		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 result="";
		for (int i = 0; i < str.length(); i++) {
			int n = str.charAt(i);
			if(n >= 48 && n <= 57 )	{// 숫자인경우
				result += numCode[Integer.parseInt(""+str.charAt(i))];
			}else {
				result += abcCode[n-97];
			}
		}
		return result;
	}

	
static String decode(String str) {
		
		// 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
		// ` ~ ! @ # $ % ^ & * ( ) - _ + = | [ ] { } ; : , . /
		char[] abcCode =	// 아스키코드 : 97~
			{ '`','~','!','@','#','$','%','^','&','*',
			'(',')','-','_','+','=','|','[',']','{',
			'}',';',':',',','.','/'};
		
		// 0 1 2 3 4 5 6 7 8 9
		char[] numCode = {'q','w','e','r','t','y','u','i','o','p'};

		String result="";
		
		for (int i = 0; i < str.length(); i++) {
			for (int j = 0; j < abcCode.length; j++) {
				if(str.charAt(i) == abcCode[j]) {	// 문자 	
					result += ""+ (char)(j+97);
					break;
				}
			}
			for (int j = 0; j < numCode.length; j++) {
				if(str.charAt(i) == numCode[j]) {
					result += ""+ (char)(j+48);
					break;
				}
			}
		}

		return result;
}
	
}