Cryptography 2014. 9. 24. 15:43

암호학 자료

http://infosec.kut.ac.kr/sangjin/class/cryptoprog0701/note01.pdf


http://infosec.kut.ac.kr/sangjin/class/cryptoalgo2010-01/chap04.pdf


http://marcof.tistory.com/58


http://system.kcu.ac/opendept/crypto/sub/sub04.htm


http://math88.com.ne.kr/crypto/DES/2des.html

'Cryptography' 카테고리의 다른 글

암호학 2주차 스터디  (0) 2014.09.27
암호학 스터디 1주차  (0) 2014.09.24
programing 2014. 9. 18. 13:41

09/18 c++ 강의

string 클래스 

c++ 표준 클래스

문자열의 크기에 따른 제약 없음

-string 클래스가 스스로 문자열 크기에 맞게 내부 버퍼를 조절한다.

문자열 복사, 비교, 수정들을 위한 다양한 함수와 연산자 제공

객체 지향적

<string> 헤더 파일에 선언

C-스트링 타입보다 다루기 쉽다.



string 변수명 ("문자열") 형태로 사용이 가능하다.

기존 c언어에서 문자열을 출력함과 동시에 선언까지 한꺼번에 해준다고 생각하면 편하다.

일일히 문자열의 버퍼 크기를 지정해줄 필요는 없지만, 배열형태로 사용이 가능하기에 그냥 이름만 붙여서 선언하면 []형태의 배열로 사용이 가능하다. 또한  

cout << "문자열" + hello + "문자열 2" ;

와 같은 형태로 hello 라는 변수명을 가진 문자열을  + 형태로 이어서 출력해주는것이 가능하다.


string 방식과 c-string 방식 두가지 방식으로 사용하는 것이 가능한데

"cin.getline(name,10,'\n');"

c- string 방식은 위와 같이 사용한다.

"getline(cin,변수명);"

string 방식은 위와 같이 사용하는데, 이떄 string 파일을 include 해주어야 한다.

객체와 클래스


객체는 상태와 행동으로 구성된다. (state , behavior)

상태에 대한 내용은 멤버 번수로 표현된다. 

행동에 대한 내용은 멤버 함수로 표현되는데, 연산 또는 기능이라고도 한다.


클래스 

-객체를 만들어내기 위해 정의된 설계도 또는 틀

-클래스는 객체가 아님. 실체도 아님.

-멤버 변수와 멤버 함수 선언.


객체

-객체는 생성될 떄 클래스의 모양을 그대로 가지고 탄생한다.

-멤버 변수와 멤버 함수로 구성된다.

-메모리에 생성되며 실체(instance)라고도 부른다.

-하나의 클래스 틀에서 찍어낸 여러 개의 객체 생성이 가능하다.

-객체들은 상호 별도의 공간에 생성된다.


같은 클래스에서 만들어졌더라도 다른 객체가 나올 수 있다. - 상세적인 값이 달라질 수 있다. (구조체의 성격)


클래스는 멤버 변수와 멤버 함수로 구성. 클래스 선언부와 구현부로 구성된다.


클래스 선언부

-class 키워드를 이용하여 클래스 선언

-멤버 변수와 멤버 함수 선언 :

멤버 함수는 원형 형태로 선언되며 클래스 선언 내에서 초기화할 수 없다.

-멤버에 대한 접근 권한 지정 :

private,public,protected중의 하나이며 기본값은 private이다. public은 다른 모든 클래스와 객체에서 멤버의 접근이 가능하다는것을 표시한다.



클래스 선언부 예

"class circle {
public : int radius; // 멤버 변수
double getArea(); //멤버 함수
};
"

클래스 구현부 예

"double circle::getArea(){
return 3.14*radius*radius
};
"


'programing' 카테고리의 다른 글

10-2 C++  (0) 2014.10.02
c++ 강의 9/11  (0) 2014.09.11
파일 위치 지시자  (0) 2014.06.07
calloc realloc 조사  (0) 2014.06.06
ftell, fseek 함수  (0) 2014.05.31
programing 2014. 9. 11. 14:52

c++ 강의 9/11

iostream - Input Output stream :

c언어의 stdio 에 대응


cout,cin - C-output, C-input :

 outpu과 input, 즉 출력과 입력을 의미하며 << (쉬프트 연산자)와 함께 사용된다. 


쉬프트 연산자 - << :

 해당 쉬프트 연산이 가리키는 방향으로 값을 넣어준다고 이해하자.

예를들어 A << B 라면 A에 B의 값을 인자로 넘겨 A를 호출한다고 생각할 수 있다.


std:cout << " A + 3 = " <<  a+3 << std::endl;


 또한 기존 c언어 문법에서 사용하던 %d나%c 같은 서식문자를 사용하여 변수를 호출하는 대신, << 쉬프트 연산자를이용하여 변수나 함수, 연산식을 바로바로 호출할 수 있다.


std- Standard

 '일반적이다' 라고 이해하면 될것같고, std::cout 와 같은 형태로 사용된다, 죽 이어서 읽어본다면 Standard C output 이 되며 출함수로 c언어의 printf 에 대응된다.


C언어와 마찬가지로 std::cout (printf) 에서 함수의 리턴값을 호출하거나 연산식의 호출 또한 가능하다.


std:cout << "n+5 =" << n+5;

 

Namespace-이름공간:

이름충돌이 발생하는 경우 - 여러명이 서로 나누어 프로젝트를개발하거나, 오픈소스&다른사람이 작성한 코드나 목적파일을 가져와 컴파일 하거나 링크하는 경우에 주로 발생한다.using naemespace std; 라는 코드를 통해 이후의 namespace에 일일히 std를 입력하지 않아도 이름공간에 std가 저절로 들어가게 해줄 수 있다. 또한 namespace는 변수명이나 구조체, 함수처럼 선언하여 사용하는것이 가능하다.


namespace hello {

int a=3;

 int b=4;

} // hi::a, hi::b 와 같은 형태로 이름공간 내의 변수 선언, 호출이 가능하다.

using namespace std; // std 이름공간을 사용하겟다고 선언

int main(){


cout << "a값 : " << hello::a <<"b 값 : "<< hello ::b << '\n';


}


변수의 선언 : 

절차지향적인 c언어에서는 변수의 선언이 함수나 프로그램의 상단에서 이루어져야 했다면, 객체지향적인 C++언어에서는 변수의 선언이 함수나 프로그램의 상단에서 할 필요 없이 프로그램이 진행되는곳 어디에서나 가능하다.


연습문제1:

#include <iostream>

using namespace std;

namespace network{

int count;


void Test()

{

 cout << "\n 통신을 테스트 합니다."<<endl ;

};

}


namespace Data{

int count;


void Test()

{

 cout << "\n 데이터 처리 작업을 수행합니다. "<<endl ;

};

}



int main()

{

cout << "통신 횟수 입력 : " ;

cin >> network::count;

cout << "\n데이터 처리 횟수 입력 : ";

cin >> Data::count;

int count;


for(count=0;count!=network::count;count++)

network::Test();


for(count=0;count!=Data::count;count++)

Data::Test();

cout << "\n";

return 0;

}


연습문제 2:

#include <iostream>

using namespace std;


namespace Vals{

namespace Valin{

int n1;

};

int n2;

};



namespace Sum{

int CalFunc(int n1,int n2)

{

return n1+n2;

};


};


namespace Minus{

int CalFunc(int n1,int n2)

{

return n1-n2;

};


};



int main()

{

cout << "값1 : ";

cin >> Vals::n2;

cout << "값2 : ";

cin >> Vals::Valin::n1;


Sum::CalFunc(Vals::n2,Vals::Valin::n1);

cout<<"Minus = " << Minus::CalFunc(Vals::n2, Vals::Valin::n1) << endl;


}


c언어와는 약간 다른 생소한 방식의 c++ 언어이지만, 기본적으로는 c언어의 문법을 그대로 가져다 쓰는것이 많고, c언어에서 파생되어 나왔기 때문인지 c언어와 많은 부분이 닮아있었다. 기존 c언어의 지식을 얼마나 잘 활용하느냐가 c++언어를 익히는데에 중요하게 작용할 것 같다.


'programing' 카테고리의 다른 글

10-2 C++  (0) 2014.10.02
09/18 c++ 강의  (0) 2014.09.18
파일 위치 지시자  (0) 2014.06.07
calloc realloc 조사  (0) 2014.06.06
ftell, fseek 함수  (0) 2014.05.31