피켓트레이서
라우터 2911
2960 스위치
PC 서버
서버 DNS, MAIL, WEB, 방화벽 설정
2017년 12월 11일 월요일
2017년 12월 8일 금요일
자바 복소수
복소수 = 실수부 + 허수부
예) 3 + 2i, -1 - 2i
i = root(-1)
i*i = -1
복소수 합, 곱
(1+2i) + (2+3i) = 3 + 5i
(1+2i) * (2+3i) = 2 + 3i + 4i - 6 = -4 + 7i // 분배법칙 적용
예) 3 + 2i, -1 - 2i
i = root(-1)
i*i = -1
복소수 합, 곱
(1+2i) + (2+3i) = 3 + 5i
(1+2i) * (2+3i) = 2 + 3i + 4i - 6 = -4 + 7i // 분배법칙 적용
2017년 12월 7일 목요일
JAVA Student 클래스 만들기, String.format 메소드
class Student1 {
private String name;
private int rollno, age;
public void setName(String n) {
name = n;
}
public void setRollno(int r) {
rollno = r;
}
public void setAge(int a) {
age = a;
}
public String toString() {
return String.format("학생[%s:%d:%d]", name, rollno, age);
}
}
public class StudentTest {
public static void main(String[] args) {
Student1 s = new Student1();
s.setName("김현준");
s.setAge(24);
s.setRollno(1301081);
System.out.println(s);
}
}
2017년 12월 6일 수요일
네트워크 12월 07일 - 2
암호 보안 기술
원웨이 펑션으로 역으로 되돌리는데 컴퓨터 계산으로 10년 걸린다 한마디로 불가능
되돌릴거면 알고리즘을 안다 해도 키를 알아야 한다.
비밀키 = 대칭형, 대표적으로 DES, 암호키와 복호키가 동일, 키의 분배 문제가 있다.(키 분배의 어려움) 이걸 개선한것이 비 대칭형(공개키)
비 대칭형 = 잠그는거랑 푸는게 다르다. 대표적으로 RSA, 공개키 나에게 보낼 사람들은 공개된 키로 암호화를 해서 보낸다. 내가 가진 키로만 풀 수 있으니 비밀성 보장., 암호화와 복호화키가 다르니 키 분배 문제가 없다.
전자서명 = 키(개인키+공개키)를 이용하여 본인만 가지고 있는 키를 이용하여 본인 이라는걸 증명,
인증 = 인증과 권한을 헷갈리면 안됨, 인증을 위해 시스템에 접근하는 각 사용자가 권한이 있는 사용자인지 구분해야 하고, 각 사용자가 본인 여부를 확인하는 과정도 필요하다.
생체 인식 = 개인의 독특한 생체 정보(지문, 목소리, 홍채, 손의 정맥 등)를 패스워드로 활용하여 인증하는 방식.
메일 보안 기술
- 메일 자체를 암호화 하여 슈퍼유저라도 볼 수 없게 만든다.
PGP 보안성은 조금 취약하나 구현이 쉽다.
PEM - 표준형, 좀 더 강력하다
---------------------------------------------------------------------------------------
GN3 - 피켓트레이서 같은 프로그램인데 존나 무거움
원웨이 펑션으로 역으로 되돌리는데 컴퓨터 계산으로 10년 걸린다 한마디로 불가능
되돌릴거면 알고리즘을 안다 해도 키를 알아야 한다.
비밀키 = 대칭형, 대표적으로 DES, 암호키와 복호키가 동일, 키의 분배 문제가 있다.(키 분배의 어려움) 이걸 개선한것이 비 대칭형(공개키)
비 대칭형 = 잠그는거랑 푸는게 다르다. 대표적으로 RSA, 공개키 나에게 보낼 사람들은 공개된 키로 암호화를 해서 보낸다. 내가 가진 키로만 풀 수 있으니 비밀성 보장., 암호화와 복호화키가 다르니 키 분배 문제가 없다.
전자서명 = 키(개인키+공개키)를 이용하여 본인만 가지고 있는 키를 이용하여 본인 이라는걸 증명,
인증 = 인증과 권한을 헷갈리면 안됨, 인증을 위해 시스템에 접근하는 각 사용자가 권한이 있는 사용자인지 구분해야 하고, 각 사용자가 본인 여부를 확인하는 과정도 필요하다.
생체 인식 = 개인의 독특한 생체 정보(지문, 목소리, 홍채, 손의 정맥 등)를 패스워드로 활용하여 인증하는 방식.
메일 보안 기술
- 메일 자체를 암호화 하여 슈퍼유저라도 볼 수 없게 만든다.
PGP 보안성은 조금 취약하나 구현이 쉽다.
PEM - 표준형, 좀 더 강력하다
---------------------------------------------------------------------------------------
GN3 - 피켓트레이서 같은 프로그램인데 존나 무거움
2017년 12월 5일 화요일
네트워크 12월 06일 - 1
어플리케이션 보안
네트워크 보안
차단
가로채기 - 슬리핑 가는 정보를 도청
변조 - 문서를 바꿔서 전달
위조 - 권한을 바꿔 전달
IP 스푸핑 - ip주소를 속이는 행위 DHCP
IP 스푸핑을 차단하는 방법
- 엑세스 제어
- 필터링
- 암호화
IP 스니핑 - 데이터를 엿듣는 일종의 도청 행위 스위치가 나오고나서 많이 사라졌다. DHCP 스푸핑과 같이 사용해야 사용할만하다
SSL 시큐어 소켓 레이어
VPN 버추얼 프라이빗 네뜨웍
시스템 보안 기술 - 자기 자신 보안, 개인 방화벅, 침입 탐지 시스템, 침입 방지 시스템
방화벽 - 출입문과 비슷하다. 인증된 사용자만 들어오게 허용.
바왛벽의 기본 구성요소
네트워크 정책 - ICMP 프로토콜 차단 등
방화벽 사용자 인증 시스템 - 아디 로그인 같이 이용
패킷 필터링, 응용 계층 게이트웨이
바오하벽의 일반적인 사용 방법은 스크리닝 라우터
베스천 호스트 스크리닝 라우터 보단 속도 느림
방화벽 시스템 방식
- 패킷 필터링 방식
> 디도스를 못막는다. 7계층 어픞리케이숀 방화벽은 막음
하이브리드 방화벽
> 혼용 방화벽
인바운드 - 내쪽으로 들어오는거
아웃바운드 - 나가는거
침입 탐지 시스템(IDS)
- 액숀을 안취한다. 경고만 해줌
침입 방지 시스템(IPS)
- 액숀을 취한다. 실제로 막아줌 비쌈 능동적인 시스템
요즘은 웹 방화벽도 있다. http를 타고오는 스크립트 분석
일반적인 방화벽 3~4계층
암호화 고등수학을 해야함 지가 박사때 들은거 자랑함 지가 수학 97점인데 포기함 지같은 천재도 못한다고 개념만 알라고함
암호화는 키와 알고리즘으로 구성, 원웨이 평션을 이용, 철수야 방정식 알제? 윤동아 옆에 누고 A+B=C인데 C는 A+B인걸 못알게함 이게 원웨이 뻥션임 DES 잠그는키와 푸는키가 같음
대칭형 암호화 - 잠그는 키와 여는 키가 같음 존나큰 단점이 키를 나눠써야함 키만 있으면 개나소나 염
비 대칭형 암호화 - 잠그는 키와 푸는 키가 다름 대표적 RSA, 퍼블릭키 알고리즘이라고도 함 내가 이걸 썻다 도장 딱 전자 서명
비밀키, 공개키 비슷 인증, 전자 서명 비슷
네트워크 보안
차단
가로채기 - 슬리핑 가는 정보를 도청
변조 - 문서를 바꿔서 전달
위조 - 권한을 바꿔 전달
IP 스푸핑 - ip주소를 속이는 행위 DHCP
IP 스푸핑을 차단하는 방법
- 엑세스 제어
- 필터링
- 암호화
IP 스니핑 - 데이터를 엿듣는 일종의 도청 행위 스위치가 나오고나서 많이 사라졌다. DHCP 스푸핑과 같이 사용해야 사용할만하다
SSL 시큐어 소켓 레이어
VPN 버추얼 프라이빗 네뜨웍
시스템 보안 기술 - 자기 자신 보안, 개인 방화벅, 침입 탐지 시스템, 침입 방지 시스템
방화벽 - 출입문과 비슷하다. 인증된 사용자만 들어오게 허용.
바왛벽의 기본 구성요소
네트워크 정책 - ICMP 프로토콜 차단 등
방화벽 사용자 인증 시스템 - 아디 로그인 같이 이용
패킷 필터링, 응용 계층 게이트웨이
바오하벽의 일반적인 사용 방법은 스크리닝 라우터
베스천 호스트 스크리닝 라우터 보단 속도 느림
방화벽 시스템 방식
- 패킷 필터링 방식
> 디도스를 못막는다. 7계층 어픞리케이숀 방화벽은 막음
하이브리드 방화벽
> 혼용 방화벽
인바운드 - 내쪽으로 들어오는거
아웃바운드 - 나가는거
침입 탐지 시스템(IDS)
- 액숀을 안취한다. 경고만 해줌
침입 방지 시스템(IPS)
- 액숀을 취한다. 실제로 막아줌 비쌈 능동적인 시스템
요즘은 웹 방화벽도 있다. http를 타고오는 스크립트 분석
일반적인 방화벽 3~4계층
암호화 고등수학을 해야함 지가 박사때 들은거 자랑함 지가 수학 97점인데 포기함 지같은 천재도 못한다고 개념만 알라고함
암호화는 키와 알고리즘으로 구성, 원웨이 평션을 이용, 철수야 방정식 알제? 윤동아 옆에 누고 A+B=C인데 C는 A+B인걸 못알게함 이게 원웨이 뻥션임 DES 잠그는키와 푸는키가 같음
대칭형 암호화 - 잠그는 키와 여는 키가 같음 존나큰 단점이 키를 나눠써야함 키만 있으면 개나소나 염
비 대칭형 암호화 - 잠그는 키와 푸는 키가 다름 대표적 RSA, 퍼블릭키 알고리즘이라고도 함 내가 이걸 썻다 도장 딱 전자 서명
비밀키, 공개키 비슷 인증, 전자 서명 비슷
JAVA
import java.util.Scanner;
public class Www {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str;
while (true) {
System.out.print("문자열을 입력하세요> ");
str = sc.next();
if (str.equals("quit"))
break;
if (str.matches("^www\\.(.+)")) // 정규식 www.으로 반드시 시작해야함 ^문자열의 시작 \\. \"하듯이 일반적인 .표현 (.+) 아무거나(.) 와야된다.
System.out.println(str + " 은 'www'로 시작합니다.");
else
System.out.println(str + " 은 'www'로 시작하지 않습니다.");
}
}
}
public class Www {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str;
while (true) {
System.out.print("문자열을 입력하세요> ");
str = sc.next();
if (str.equals("quit"))
break;
if (str.matches("^www\\.(.+)")) // 정규식 www.으로 반드시 시작해야함 ^문자열의 시작 \\. \"하듯이 일반적인 .표현 (.+) 아무거나(.) 와야된다.
System.out.println(str + " 은 'www'로 시작합니다.");
else
System.out.println(str + " 은 'www'로 시작하지 않습니다.");
}
}
}
JAVA 메소드
static method(정적메소드) == 객체생성없이 호출
Math.sqrt(9.0) == 3.0
Math.random() : [0, 1)
Integer.parseInt("123") == 123
Double.pareseDouble("3.14") == 3.14
Math.sqrt(9.0) == 3.0
Math.random() : [0, 1)
Integer.parseInt("123") == 123
Double.pareseDouble("3.14") == 3.14
JAVA 문자열
문자열은 기초 자료형이 아니다. 객체이다.
객체는 하프(힢)이라는 공간에 저장된다.
String s = new String("Hello World!"); // 선언과 동시에 초기화
s == 참조변수
String 클래스의 메소드
charAt(int index) : char해당하는 위치의 문자를 반환
equals(Ovject anObject) : boolean 문자열이 같은지 비교한다
String s1 = new String("Hello");
String s2 = new String("Hello");
String s3 = "Hello";
String s4 = "Hello";
s3 == s4 // true 처음은 새로 만들어도 s4 얘는 s3의 Hello 그대로 가져옴
s1 == s2 // false 이유는 참조형 변수라서 주소값을 비교하기 때문. new연산자를 사용해서 둘다 새로운 객체이다.
s1.equals(s2) // true , 대소문자 구분한다. Hello와 hello 구분하면 안댐
s1.equalsIgnoreCase(s2) // Hello, hello를 넣어도 true이다. 대소문자 구분을 안 한다.
s1.concat(s2) // HelloHello 문자 두개를 붙인다 s1+s2와 같은 기능이다.
s1.isEmpty() // false 이 메소드는 length()가 0이면 true를 반환한다.
compareTo(Stirng anotherString) // 사전적 순서로 문자열을 비교한다. 앞에 있으면 -1, 같으면 0, 뒤에 있으면 1이 반환, 내가 작으면 음수 내가 크면 양수 사전적 순서라는 것은 사전에 누가 먼저 나오는지 라고 생각하면 편하다. "abcde"와 "abd"를 비교하면 "abd"가 더 크다.
s1 = Hello, s2 = World
s1.compareTo(s2) // s1 - s2 =-15, s2 - s1 = 15
/* String 객체 == 상수 문자열
* 기존에 참조하던 객체를 바꾸는게 아니라 참조 주소가 변경된것이다.
* String s1 = new String("Hello");
* s1 = s1.toUpperCase();
*
* Hello 값이 어디 가는게 아니라 그대로 있고 s1은 참조하던 주소가 변경된것이다.
* Hello == 쓰레기
*
*/
public class StringTest {
public static void main(String[] args) {
String proverb = "A barking dog";
String s1, s2, s3, s4;
System.out.println("문자열의 길이 ="+ proverb.length());
s1 = proverb.concat(" never Bites!"); // 문자열 결합 + 연산자와 같음
s2 = proverb.replace('b', 'B'); // 문자 교환
s3 = proverb.substring(2, 5); // 인덱스 2이상 5미만
s4 = proverb.toUpperCase(); // 대문자 변환
System.out.println(s1);
System.out.println(s2);
System.out.println(s3);
System.out.println(s4);
}
}
객체는 하프(힢)이라는 공간에 저장된다.
String s = new String("Hello World!"); // 선언과 동시에 초기화
s == 참조변수
String 클래스의 메소드
charAt(int index) : char해당하는 위치의 문자를 반환
equals(Ovject anObject) : boolean 문자열이 같은지 비교한다
String s1 = new String("Hello");
String s2 = new String("Hello");
String s3 = "Hello";
String s4 = "Hello";
s3 == s4 // true 처음은 새로 만들어도 s4 얘는 s3의 Hello 그대로 가져옴
s1 == s2 // false 이유는 참조형 변수라서 주소값을 비교하기 때문. new연산자를 사용해서 둘다 새로운 객체이다.
s1.equals(s2) // true , 대소문자 구분한다. Hello와 hello 구분하면 안댐
s1.equalsIgnoreCase(s2) // Hello, hello를 넣어도 true이다. 대소문자 구분을 안 한다.
s1.concat(s2) // HelloHello 문자 두개를 붙인다 s1+s2와 같은 기능이다.
s1.isEmpty() // false 이 메소드는 length()가 0이면 true를 반환한다.
compareTo(Stirng anotherString) // 사전적 순서로 문자열을 비교한다. 앞에 있으면 -1, 같으면 0, 뒤에 있으면 1이 반환, 내가 작으면 음수 내가 크면 양수 사전적 순서라는 것은 사전에 누가 먼저 나오는지 라고 생각하면 편하다. "abcde"와 "abd"를 비교하면 "abd"가 더 크다.
s1 = Hello, s2 = World
s1.compareTo(s2) // s1 - s2 =-15, s2 - s1 = 15
/* String 객체 == 상수 문자열
* 기존에 참조하던 객체를 바꾸는게 아니라 참조 주소가 변경된것이다.
* String s1 = new String("Hello");
* s1 = s1.toUpperCase();
*
* Hello 값이 어디 가는게 아니라 그대로 있고 s1은 참조하던 주소가 변경된것이다.
* Hello == 쓰레기
*
*/
public class StringTest {
public static void main(String[] args) {
String proverb = "A barking dog";
String s1, s2, s3, s4;
System.out.println("문자열의 길이 ="+ proverb.length());
s1 = proverb.concat(" never Bites!"); // 문자열 결합 + 연산자와 같음
s2 = proverb.replace('b', 'B'); // 문자 교환
s3 = proverb.substring(2, 5); // 인덱스 2이상 5미만
s4 = proverb.toUpperCase(); // 대문자 변환
System.out.println(s1);
System.out.println(s2);
System.out.println(s3);
System.out.println(s4);
}
}
JAVA 실습) 직사각형의 너비와 높이를 입력받아 넓이와 둘레길이 계산
import java.util.Scanner;
public class Test01 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int w,h;
System.out.print("가로, 세로 입력: ");
w = sc.nextInt();
h = sc.nextInt();
System.out.printf("넓이 = %d\n둘레길이 = %d", w*h, (w+h)*2);
}
}
import java.util.Scanner;
public class Test02 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int w,h;
System.out.print("가로, 세로 입력: ");
w = sc.nextInt();
h = sc.nextInt();
System.out.printf("넓이 = %d\n둘레길이 = %d", area(w,h), length(w,h));
}
static int area(int w, int h) {
return w*h;
}
static int length(int w, int h) {
return (w+h)*2;
}
}
import java.util.Scanner;
class Rectangle {
private int w, h;
public int area() {
return w*h;
}
public int length() {
return (w+h)*2;
}
public void setW(int x) {
w = x;
}
public void setH(int x) {
h = x;
}
public String toString() {
return "Rectangle[너비:" + w + " 높이:" + h + "]" ;
}
}
public class Test03 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Rectangle MyRt = new Rectangle();
System.out.print("가로, 세로 입력: ");
MyRt.setW(sc.nextInt());
MyRt.setH(sc.nextInt());
System.out.printf("넓이 = %d\n둘레길이 = %d\n", MyRt.area(), MyRt.length());
System.out.println(MyRt);
}
}
public class Test01 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int w,h;
System.out.print("가로, 세로 입력: ");
w = sc.nextInt();
h = sc.nextInt();
System.out.printf("넓이 = %d\n둘레길이 = %d", w*h, (w+h)*2);
}
}
import java.util.Scanner;
public class Test02 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int w,h;
System.out.print("가로, 세로 입력: ");
w = sc.nextInt();
h = sc.nextInt();
System.out.printf("넓이 = %d\n둘레길이 = %d", area(w,h), length(w,h));
}
static int area(int w, int h) {
return w*h;
}
static int length(int w, int h) {
return (w+h)*2;
}
}
import java.util.Scanner;
class Rectangle {
private int w, h;
public int area() {
return w*h;
}
public int length() {
return (w+h)*2;
}
public void setW(int x) {
w = x;
}
public void setH(int x) {
h = x;
}
public String toString() {
return "Rectangle[너비:" + w + " 높이:" + h + "]" ;
}
}
public class Test03 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Rectangle MyRt = new Rectangle();
System.out.print("가로, 세로 입력: ");
MyRt.setW(sc.nextInt());
MyRt.setH(sc.nextInt());
System.out.printf("넓이 = %d\n둘레길이 = %d\n", MyRt.area(), MyRt.length());
System.out.println(MyRt);
}
}
2017년 12월 1일 금요일
JAVA 실습) 반지름 입력받아 원의 넓이와 둘레 출력
3가지 방법이 있다.
1) 바로 main 안에서 구현
import java.util.Scanner;
public class MyMathTest {
public static void main(String[] args) {
int radius;
final double PI = 3.14;
double area, round;
Scanner sc = new Scanner(System.in);
System.out.print("반지름 입력: ");
radius = sc.nextInt();
area = radius * radius * PI;
round = 2 * PI * radius;
System.out.printf("원의 넓이=%.1f\n 원의 둘레길이=%.1f\n", area, round);
}
}
1) 바로 main 안에서 구현
import java.util.Scanner;
public class MyMathTest {
public static void main(String[] args) {
int radius;
final double PI = 3.14;
double area, round;
Scanner sc = new Scanner(System.in);
System.out.print("반지름 입력: ");
radius = sc.nextInt();
area = radius * radius * PI;
round = 2 * PI * radius;
System.out.printf("원의 넓이=%.1f\n 원의 둘레길이=%.1f\n", area, round);
}
}
2) 절차지향프로그래밍 (C언어 스타일)
import java.util.Scanner;
public class MyMathTest {
public static void main(String[] args) {
int radius;
double area, round;
Scanner sc = new Scanner(System.in);
System.out.print("반지름 입력: ");
radius = sc.nextInt();
area = calArea(radius);
round = calRound(radius);
System.out.printf("원의 넓이=%.1f\n원의 둘레길이=%.1f\n", area, round);
}
static double calArea(int r) {
final double PI = 3.14;
return r*r*PI;
}
static double calRound(int r) {
final double PI = 3.14;
return 2*PI*r;
}
}
3) 객체지향프로그래밍
1. 추상화
원
상태(필드, 속성) : 반지름
동작 : 넓이, 둘레길이
2. UML
Cricle
---------------------------------
- radius : int
+ calArea() : double
+ calRound() : double
+ setRadius(int r) : void
+ toString() : String
---------------------------------
3. UML을 토대로 클래스 생성
public class Circle {
int radius;
static final double PI = 3.14;
public double calArea() { // 필드에 r이 있으니 매개변수가 따로 필요없다. 객체지향의 장점이다. 전달값을 줄일수가있따
return radius*radius*PI;
}
public double calRound() {
return 2*PI*radius;
}
public void setRadius(int r) {
radius = r;
}
public String toString() {
return "Circle[radius="+ radius+ "]";
}
}
4. 객체를 이용해 완성
import java.util.Scanner;
public class MyMathTest {
public static void main(String[] args) {
int radius;
double area, round;
Scanner sc = new Scanner(System.in);
Circle myCircle = new Circle();
System.out.print("반지름 입력: ");
radius = sc.nextInt();
myCircle.setRadius(radius);
area = myCircle.calArea();
round = myCircle.calRound();
System.out.printf("원의 넓이=%.1f\n원의 둘레길이=%.1f\n", area, round);
System.out.println(myCircle);
}
}
JAVA UML
객체 추상화 -> 클래스 -> 객체 사용
클래스 만들기 전에 UML을 만든다.
그림을 그리는 것
- 비공개 + 공개
Television
- isOn : boolean
- volume : int
- channel : int
--------------------
+setChannel()
+getChannel()
.
.
.
.
클래스 만들기 전에 UML을 만든다.
그림을 그리는 것
- 비공개 + 공개
Television
- isOn : boolean
- volume : int
- channel : int
--------------------
+setChannel()
+getChannel()
.
.
.
.
피드 구독하기:
글 (Atom)
시스템 보안
1. 내컴퓨터는 해킹이 당한적 있는가? 있다. 2. 컴퓨터를 하게되면 해킹을 당한다. 무엇을 이용해 해킹을 하는가? 인터넷이 가장 보편적. 사회적인 공격(주변인이 사전정보를 가지고 해킹) 3. 대응을 어떻게 해야하나? 보안프로...
-
import java.util.Scanner; // 실습) 크기가 10인 정수배열 생성, // [1,100] 임의의 수 할당 // ==> 합, 평균, 분산, 표준편차 출력 // 힌트) (int)(Math.random()*100)+...
-
3가지 방법이 있다. 1) 바로 main 안에서 구현 import java.util.Scanner; public class MyMathTest { public static void main(String[] args) { int ra...