Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 상속
- 추상 메서드
- Java
- 모달창 여러개
- singleton
- 깃 명령어
- 싱클톤패턴
- GROUP BY
- 사용자 데이터그램 프로토콜
- react
- oracle 연동
- order by
- 스프링 모달창
- 형변환
- IP
- downcasting
- 템플릿
- static메서드
- 객체협력
- static 예제
- spring annotation
- 오라클 비교연산자
- SUB Query
- 다운캐스팅
- static
- 이클립스 오라클 연동
- Servlet 맵핑
- 리스트 모달창
- 다중 모달창
- AOP란?
Archives
- Today
- Total
모든지 기록하자!
[Java] 암호화 / 복호화 본문
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
'Java' 카테고리의 다른 글
[Java] 변수의 유효 범위 (scope) (0) | 2021.05.13 |
---|---|
[Java] singleton 패턴 (0) | 2021.05.13 |
[Java] 배열을 이용한 예제( 1차원배열의 합, 2차원배열의 합, 잔돈구하기) (0) | 2021.05.12 |
[Java] static 변수 (0) | 2021.05.12 |
[Java] 객체간의 협력(대중교통 이용) (0) | 2021.05.11 |
Comments