/*
char abcCode[] = { // a ~ z
'`', '~', '!', '@', '#', // a b c d e
'$', '%', '^', '&', '*',
'(', ')', '-', '_', '+',
'=', '|', '[', ']', '{',
'}', ';', ':', ',', '.', '/'
};
char numCode[] = { // 0 ~ 9
'q', 'w', 'e', 'r', 't',
'y', 'u', 'i', 'o', 'p'
};
*/
String str = "abcd0123";
System.out.println("원본: "+str);
String scode = security(str);
System.out.println("암호화:" + scode);
String dcode = deciphering(scode);
System.out.println("복호화:" + dcode);
}
static String security(String src) {
char abcCode[] = { // a ~ z
'`', '~', '!', '@', '#', // a b c d e
'$', '%', '^', '&', '*',
'(', ')', '-', '_', '+',
'=', '|', '[', ']', '{',
'}', ';', ':', ',', '.', '/'
};
char numCode[] = { // 0 ~ 9
'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 n = (int)ch;
// 알파벳의 경우
if(n >= 97 && n <= 122) { //소문자 a~z범위
n = n - 97; // 97 == 0
resultCode = resultCode + abcCode[n];//인덱스 번호로 대입
//a일 경우 숫자 0으로 만들어서 abcCode[0]의 값이 문자로 출력되도록 함
}
// 숫자의 경우
if(n >= 48 && n <= 57) { //1~9 범위
n = n - 48; // 48 == 0
resultCode = resultCode + numCode[n];//1일경우 numCode[0]의 값이 도출
}
}
return resultCode;
}
static String deciphering(String src) {
char abcCode[] = { // a ~ z
'`', '~', '!', '@', '#', // a b c d e
'$', '%', '^', '&', '*',
'(', ')', '-', '_', '+',
'=', '|', '[', ']', '{',
'}', ';', ':', ',', '.', '/'
};
char numCode[] = { // 0 ~ 9
'q', 'w', 'e', 'r', 't',
'y', 'u', 'i', 'o', 'p'
};
String baseCode = "";
for (int i = 0; i < src.length(); i++) {
char ch = src.charAt(i);
int n = (int)ch;
int index = 0;
if(n >= 97 && n <= 122) { // 암호화된 숫자 범위(numCode[])
for (int j = 0; j < numCode.length; j++) {
if(ch == numCode[j]) {//str을 낱개로 바꾼 ch값에 numCode값이 있을경우
index = j; // 0 ~ 9 index number
break;
}
}
index = index + 48;//아스키코드 숫자범위
baseCode = baseCode + (char)index;
}
else { // 암호화된 알파벳
for (int j = 0; j < abcCode.length; j++) {
if(ch == abcCode[j]) {
index = j;
break;
}
}
index = index + 97;
baseCode = baseCode + (char)index;
}
}
return baseCode;