username1103의 등록된 링크

키자드에 등록된 총 178개의 포스트를 확인하실 수 있습니다.

Naver Blog

Division Algorithm

Division Algorithmexistence 증명uniquness 증명Division Algorithm의 일반화즉, 이러한 Division A...

Naver Blog

Google colaboratory 구글 콜랩 이용하기

1. 구글 드라이브로 이동2. 새로만들기 → 더보기 → 연결할 앱 더보기 클릭3. colaboratory 검색 후 설치4...

Naver Blog

Epoch, batch size, iteration

Epoch란 모델이 전체 데이터 셋을 한번 학습하는 것을 말한다.batch size란 데이터를 학습시키고자 할 ...

Naver Blog

독립 변수(Independent variable)와 종속 변수(Dependent variable)

독립 변수란 ? 원인이 되는 변수종속 변수란? 결과가 되는 변수예를 들어, 집값을 결정하는 요소는 여러...

Naver Blog

머신러닝의 분류

1. 지도학습(supervised learning)- 지도 학습이란 기계를 가르친다라는 의미로 문제와 답이 있는 데이터...

Naver Blog

HTML과 XML

HTML ( Hyper Text Markup Language ) 과 XML( eXtensible Markup Language ) 모두 마크업 ...

Naver Blog

github 폴더에 화살표 현상

github에 푸쉬했을 때, 위와같이 나오는 현상은 해당 폴더내에도 git이 존재하여 충돌하는 문제이다.이를 ...

Naver Blog

Javascript 함수 선언

일반적인 함수 선언예시화살표를 이용한 함수 선언(arrow function)예시바로 리턴하는 경우 아래와 같이 작...

Naver Blog

그리디(greedy) 알고리즘

그리디 알고리즘은 현재 상황에서 가장 좋은 것을 고르는 방법을 의미한다. 즉, 매번 가장 좋은 방법을 선...

Naver Blog

Nodejs Express 와 React 연결하기

react app 생성하기folder-name에 원하는 폴더이름을 설정하면 폴더가 생성됩니다.이후 해당 폴더로 이동해...

Naver Blog

git 파일명 수정하기

깃에서 파일명을 수정하기 위해서는 파일 이동 명령어인 mv를 사용해야한다.oldpath에 현재의 경로 newpath...

Naver Blog

Nodejs 세션 express-session

* 설치* express-session 미들웨어 불러오기* 사용secret은 session ID cookie에 사인하기 위한 값으로 ...

Naver Blog

Nodejs passport.js 세션을 이용한 LocalStrategy

passport.js 는 로그인/로그아웃/인증 기능과 페이스북으로 로그인, 구글로 로그인과 같은 기능을 제공하는...

Naver Blog

git add

* git add 하기 ( staged 상태로 만들기 )git add [파일명 or 폴더명] 아래와 같이 폴더명 입력시 해당 ...

Naver Blog

git commit

*git commit 하기git commit -m "커밋메세지"git log의 경우 q를 누르면 탈출 가능* git commi...

Naver Blog

HTTP 쿠키(cookie)란?

Http 쿠키는 서버가 사용자의 웹 브라우저에 전송하는 작은 데이터 조각으로 브라우저 에서는 해당 데이터...

Naver Blog

Nodejs 쿠키 생성, 읽기

* 쿠키 생성하기 - 결과위 와 같이 응답 헤더에 firstcookie 와 secondcookie가 추가되었고 application의 ...

Naver Blog

Nodejs Express generator

express generator는 express기반의 프로젝트를 작성할 때 필요한 기본적인 코드와 파일을 자동으로 생성해...

Naver Blog

Nodejs npm을 통한 모듈 추가,업데이트,삭제

* 추가-s : 해당 프로젝트에만 설치-g : 전역에 설치( 어느 프로젝트에서나 사용가능 )* 업데이트* 삭...

Naver Blog

python heapq

파이썬에서 heap기능을 위해 제공하는 라이브러리단순히 heap에 넣는 것 만으로 시간복잡도 O(NlogN)...

Naver Blog

pyhton stack, queue

자료구조란 데이터를 표현하고 관리하고 처리하기 위한 구조를 말한다.스택과 큐는 자료구조 중 하나이다....

Naver Blog

python 비트연산자(bitwise-operators)

1. 쉬프트쉬프트에는 오른쪽 쉬프트, 왼쪽 쉬프트가 있다. 8은 2진법으로 나타내면 1000 으로 나타내어진다...

Naver Blog

python char to ascii

파이썬에서 문자하나를 ascii값으로 바꾸려면 ord()함수를 사용하면 된다.ord() 는 유니코드 글자를 하나 ...

Naver Blog

python 입력 받기

1. 간단하게 입력받기2. " "로 나눠진 숫자들 입력받기( 코테 문제들에 많이 사용 )3. input함...

Naver Blog

python list 값들을 출력하기(join)

아래와 같이 list가 있다고 해보면위 리스트를 " "으로 나누어 값만 출력하고 싶다면 join함수를...

Naver Blog

Express-generator와 pm2로 실행하기

1. express-generator 와 pm2 설치하기 2. express 실행=> 하면 myapp 폴더가 생기며 기본 폴더들...

Naver Blog

Bootstrap 이용하기

bootstrap을 이용하는 방법은 가장 간단한 CDN을 이용하는 것과 npm을 이용해서 설치하는 방법, 파일을 ...

Naver Blog

Bootstrap customize

부트스트랩 커스터마이징하기먼저 npm을 통해 부트스트랩을 설치해주거나 부트스트랩 홈페이지에서 파일...

Naver Blog

Nodejs(express) 와 MySQL 연결하기

1. npm init을 통해 package.json 생성2. express 와 mysql 설치3. express로 간단한 코드 작성4. MySQ...

Naver Blog

Express Image, CSS, JavaScript load하기

Express에서 image나 css, javascript 파일을 load하기 위해서는 express.staic 을 이용하면 됩니다.1...

Naver Blog

Ubuntu에서 Nodejs 설치하기

1. Nodejs 설치하기2. npm 설치하기3. npm init

Naver Blog

MySQL ER_NOT_SUPPORTED_AUTH_MODE

Nodejs에서 mysql을 연결하는 과정에서 다음과 같은 error가 나타난다면MySQL에 들어가과 같이 입력하면 해결된다 만약 위 명령어에 대해 ERROR 1819 (HY000): Your password does not satisfy the current policy requirements 과 같은 에러가 발생한다면 다음 내용을 확인해보면 좋다.password설정을 어떻게 해야하는지 알려주는 정보이다.validate_password.length는 8이므로 길이가 8이상.validate_password.mixed_case_count,validate_password.number_count ,validate_password.special_char_count 는 각각 대소문자, 숫자, 특수문자의 개수를 의미하므로 각각 1개 이상씩 들어가야 한다는 의미가 된다.validate_password.policy 는 이러.......

Naver Blog

우분투 Git 이용하기

git을 설치해 원격 저장소와 연결하여 올리기1. git 설치2. git 개인 정보 등록3. 버전관리를 원하는 폴더로 이동4. git 시작하기5. 원격 저장소 등록 ( github 회원가입 후 repository 생성을 먼저 해야함 )6. 변경된 모든 파일 추가 ( -A를 주면 모든파일 추가, 다른 여러 옵션이 있음 )7. 커밋8. 원격저장소에 올리기자신의 원격 저장소에서 내려받기github 저장소 내용 다운받기

Naver Blog

MySQL 데이터 베이스 구조

MySQL 데이터 베이스 구조는 Table, Database(schema), Database Server 로 나뉜다.Table이란 하나의 표를 의미한다. 이러한 Table이 여러 개가 생겨 연관이 있는 Table을 묶은 것이 Database(schema) 라고 한다.이러한 database는 여러개 생성 가능하다. 여러개의 Database를 묶은 것을 Database server라고 한다.MySQL을 다운받았다면 이는 Database Server를 만든 것이고 MySQL을 통해 내부 data를 구성해 나가는 것이다.

Naver Blog

MySQL Database 생성 및 제거

데이터 베이스 생성 코드데이터 베이스 제거 코드

Naver Blog

MySQL Database에 Table 생성하기(CREATE TABLE)

https://blog.naver.com/username1103/222198913763먼저 Table을 생성하기 원하는 Database를 선택해야 한다.위 명령을 하게 되면 해당 Database로 이동하게 된다.table_name : 테이블 이름 입력c_n : Table의 목록. 즉 id나 title, description, created 등 설정DataType : 해당 목록에 들어갈 데이터의 타입 지정 ex) INT, VARCHAR, TEXT, DATETIME( 해당 링크에 DataType 목록 있음. ) PRIMARY KEY(c1) : primary key란 해당 테이블에서 각각의 레이블을 구별하기 위해 이용하는 식별자이다.따라서 안에 값은 각각의 레이블을 구별할 수 있는 데이터 값이 들어가야 한다. c1을 primary key로 지정하겠다는 말을 의미한다.https://blog.naver.c.......

Naver Blog

Netlify 를 이용한 웹사이트 무료 배포하기(웹 호스팅)

1. netlify 홈페이지에 들어가 회원가입을 한다.https://www.netlify.com/2. sites 탭 선택3. index.html 파일이 들어있는 폴더를 드래그 해서 빨간 사각형 네모안에 올려 놓기4. 아래와 같이 빨간 네모 클릭하면 만들어진 웹사이트로 이동.5. 끝.

Naver Blog

Netlify 웹사이트 수정하기 (Deploy)

1. 위에 메뉴바에 Deploys 나 아래 큰 네모칸 클릭.2. 빨간 네모칸 안에 바뀐 index.html 파일이 들어있는 폴더를 드래그 하여 올려줍니다.3. 끝

Naver Blog

MySQL Table 에 데이터 넣기(INSERT)

https://blog.naver.com/username1103/2221989953371. 먼저 어떤 테이블이 있는지 확인합니다.2. 해당 테이블에 어떠한 값들이 저장될 수 있는지 확인합니다.DESC table_name; : 해당 table에 어떤 종류의 데이터가 들어가 있는지 알려줍니다.3. 필요한 값들을 토대로 테이블에 데이터를 추가합니다.INSERT INTO table_name(테이블의 들어갈 데이터 값들) VALUES (각 데이터에 맞는 데이터 값들)id값은 auto_increment 즉 알아서 1씩 증가하도록 설정되어있으므로 따로 값을 설정하지 않았습니다.title과 description created, author, profile 정보를 추가할 것인데 작성한 순서에 맞게 VALUES()안에 넣을 데이터 값들을 넣어줍니다.NOW() 는.......

Naver Blog

MySQL Table에 값을 조건에 따라 알아보기(SELECT)

https://blog.naver.com/username1103/222200199301· SELECT * FROM table_name : 테이블 전체 정보 얻어오기 · SELECT id,title,description,author FROM table_name : 테이블로 부터 id, title, description, author 정보만을 보여준다.· id값을 토대로 내림차순을 보여준다· author가 root인 데이터들을 id값을 기준으로 내림차순으로 보여준다 ( ORDER는 WHERE 뒤에 위치해야 한다.)· :LIMIT 2 : 위 데이터 들중 2개만 보여준다 ( 해당 링크를 통해 더 다양한 방법을 알 수 있다.[]대괄호가 있다면 생략이 가능하다는 말이다. 즉 첫줄에 [ALL | DISTINCT | DISTINCTROW ] 를 보면 이 부분은 생략이 가능하다는 말이다.가운데 ㅣ 를 기준으.......

Naver Blog

MySQL Table 데이터 수정하기 (UPDATE)

· 현재 테이블 상태· UPDATE table_name SET 설정할 정보 [WHERE 어느 타켓] 만약 WHERE을 정하지 않는다면 table에 모든 정보가 설정한 정보로 변하게 되므로 주의할 것.https://blog.naver.com/username1103/222200228703https://blog.naver.com/username1103/222200257368

Naver Blog

MySQL Table 데이터 삭제하기(DELETE)

https://blog.naver.com/username1103/222200199301현재 데이터 상태DELETE FROM table_name [WHERE 삭제할 조건]WHERE을 생략한다면 table에 모든 데이터가 사라지므로 주의가 필요함.https://blog.naver.com/username1103/222200244264https://blog.naver.com/username1103/222200257368

Naver Blog

MySQL Table column 추가, 제거하기(ADD, DROP)

https://blog.naver.com/username1103/222198995337· 테이블 column 추가하기 (ADD)ALTER TABLE table_name ADD 추가할column이름 datatype;addtable 이라는 column이 추가 되었음을 알 수 있음. 추가되는 위치는 수정이 불가함.· 테이블 column 제거하기 (DROP)ALTER TABLE table_name DROP COLUMN 삭제할column이름;https://blog.naver.com/username1103/222201234380

Naver Blog

MySQL Table column 재정의하기, 이름바꾸기(MODIFY, RENAME)

https://blog.naver.com/username1103/222198995337· 현재 테이블 상태· column 재정의 하기ALTER TABLE table_name MODIFY COLUMN 재정의할column 내용;· column 이름 수정하기 ALTER TABLE table_name RENAME COLUMN 변경할column TO 뭐로바꿀지; https://blog.naver.com/username1103/222200652652

Naver Blog

MySQL Table 결합 (LEFT JOIN, RIGHT JOIN)

위 내용 처럼 2개의 Table이 있다고 해보자. table1에 name_id 는 name table의 id와 맞추어 만들어졌다.그렇지만 지금처럼 본다면 가독성이 떨어지기 때문에 테이블을 합쳐서 보고싶다면 어떻게 해야할까?· LEFT JOINSELECT * FROM table_name LEFT JOIN 합칠table ON 규칙;LEFT JOIN은 왼쪽 테이블 즉 table1을 기준으로 다른 테이블 즉 name 테이블을 결합시키겠다는 것을 의미한다.마지막 줄처럼 해당 데이터가 없다면 NULL 을 나타낸다.만약 name_id 와 id값을 안보고 싶다면 * 대신에 원하는 column을 작성해주면 된다. 이때 주의할 점은 table1과 name에 모두 id column이 있으므로 어떤 테이블의 id값을 보고싶은지 명확히 작성해줘.......

Naver Blog

Netlify 사이트 네임 변경 하기

Netlify를 통해 사이트를 생성하게 되면 다음과 같이 이상한 이름을 주소로하는 웹사이트가 생성됩니다. 이를 바꾸기 위해서는1. Site settings 선택2. change site name 선택3. 원하는 사이트 이름으로 변경4. 끝

Naver Blog

파이썬 가상환경 셋팅하기(venv)

파이썬을 이용해 개발하는 여러 환경에서 있어서 특정 버전의 파이썬과 특정 버전의 라이브러리가 필요한 경우가 있다. 이럴 경우 가상환경을 만들어 원하는 파이썬버전과 라이브러리 버전을 셋팅할 수 있다.즉, 어떠한 프로그램을 만들때에 A버전의 파이썬과 A버전의 라이브러리가 필요할 경우, 만약 다른 프로그램에서 B버전의 파이썬과 B버전의 라이브러리가 필요하여 설치한 경우 두 프로그램에서 충돌이 발생할 수 있다. 따라서 가상환경을 만들어 해당 환경에서는 A버전의 파이썬과 A버전의 라이브러리를, 다른 환경에서는 B버전의 파이썬과 B버전의 라이브러리를 이용한다면 이를 해결할 수 있다.파이썬 가상환경 만들기- venv1. 비쥬얼.......

Naver Blog

VS code에서 cmd 터미널 열기

비쥬얼 스튜디오에서 cmd터미널 열기1. ctrl + shift + p2. 터미널: 기본 쉘(Terminal : Select Default shell)을 선택.3. Command Prompt 선택.4. 이후 터미널을 닫았다가 다시 열어줍니다.끝.

Naver Blog

No name 'QApplication' in module 'PyQt5.QWidgets'

VScode에서 PyQt5를 import하려하면 위와 같은 import error가 발생한다.이는 Pylint가 C익스텐션을 기본적으로 실행하지 않기 때문에 생기는 오류라고 합니다.해결하기 위해서는 1. ctrl + shift + p2. 기본 설정: 설정 열기(JSON)(Preference: Open Setting (JSON))을 클릭3. 아래에 내용을 열린 setting.json 파일 괄호안 마지막줄에 붙여넣기

Naver Blog

python 코드를 실행파일로 바꾸기(pyinstaller)

자신이 작성한 python코드를 실행파일로 바꾸기 위해서는 pyinstaller가 필요하다pyinstaller 설치cmd 창을 열어 다음 명령어 입력.pip install pyinstallerpyinstaller를 이용해 실행파일 만들기1. cmd창을 열어줍니다.2. cmd창에서 해당 파일이 존재하는 폴더로 이동합니다.( cd 폴더경로 입력)3. pyinstaller 파일.py 입력→ 해당 폴더안에 dist폴더안에 실행파일이 생성됨을 확인할 수 있습니다.위와 같이 입력할경우, 콘솔창과 함께 실행이 되는데 만약 콘솔창을 보고 싶지 않다면 명령어에 -w 또는 --windowed 를 옵션으로 주어 실행파일을 생성합니다.ex) pyinstaller -w 파일이름.py실행파일 하나만 생성하고 싶은 경우명령어에 -F 또.......

Naver Blog

HTML/CSS 선택자

style을 변경하기 위해서는 태그 내에서 지정하는 style, id 선택자, class 선택자, tag 선택자를 이용한다. #id는 id 선택자, .class는 클래스 선택자, a는 tag 선택자 이다.각 속성의 적용순서는 tag선택자의 속성이 적용되고 그 다음 class 선택자의 속성이 적용되고, 다음으로 id 선택자의 속성, 태그내에서의 속성이 적용되어 덧입힌다고 생각할 수 있다. 따라서 같은 속성의 경우 가장 나중에 덧입힌 속성이 적용되고 또한 겹치지 않는 속성들도 모두 적용되는 것이다.만약 같은 태그를 두 개의 class가 지정할 경우 먼저 작성된 class선택자의 속성이 적용되고 그위에 나중에 작성된 class 선택자의 속성이 적용된다.따라서 같은 속성을 변.......

Naver Blog

CSS Position

CSS에 position에는 static, relative, absolute, fixed 가 있다.position:static기본적으로 우리가 생성하는 tag들은 모두 position : static으로 되어있다.이러한 경우 left:10px top:30px 이런식으로 지정하더라도 변경되는 것이 없다. 이유는 position이 static일때 left, right, top, bottom 은 비활성화 되기 때문이다.position:relativerelative의 경우 left:20px top:20px을 지정할 경우 자신의 원래 위치에서 왼쪽을 기준으로 오른쪽으로 20px, 위를 기준으로 아래로 20px이 움직이게 된다.중요한 특징으로는 부모태그 안에서 자신의 위치를 기억해놓는다는 것이다. 따라서 부모태그를 position:relative로 변경 후 부모를 움직일 경우.......

Naver Blog

JavaScript/CSS css selector의 속성 얻어오기

위와 같이 작성한 경우 해당 css selector의 속성을 가져온다.즉 예를 들어,일 경우 body 태그의 속성들을 가져온다.위 와 같이 작성할 경우 body태그의 backgroundcolor의 정보를 얻어올 수 있다.

Naver Blog

UI 와 API 란?

UI( User Interface ) 란?말 그대로 user interface. 즉 user가 사용하는 interface를 말한다. 이 블로그 내에서도 여러가지 버튼들이 있다. 이러한 버튼들은 user인 우리가 이용하는 버튼들이다. 이러한 버튼들을 UI, User Interface라고 한다.API ( Application Programming Interface ) 란?Application을 만들기 위해 Programming시에 이용하는 Interface를 말한다. 즉 javascript에서 alert()함수는 경고창을 띄워주게 된다. alert()는 브라우저에 경고창을 띄우는 interface인 것이다. 이러한 것을 API, Application Programming Interface라고 한다.

Naver Blog

local storage와 session storage

local storage와 session storage는 둘 다 브라우저에 특정 정보를 키,값 쌍으로 저장하기 위해 사용됩니다.둘의 차이는 얼마 동안 그 정보를 유지하느냐의 차이입니다. local storage의 경우 브라우저를 껏다 켜도 데이터가 유지되는 반면,session storage는 탭이나 브라우저를 종료할 경우 데이터가 사라집니다. ( 새로고침시에는 유지됩니다. )( Cookie랑 다른점은 Cookie의 경우 서버로 전송되지만 storage의 경우 서버로 전송되지 않고 브라우저에 저장됩니다. 또 cookie보다 많은 양의 데이터를 저장해 놓을 수 있는 장점이 있습니다. )해당 정보는 브라우저에서 F12키를 눌러 Application 탭에 가보면 Storage에서 확인할 수 있습니다.......

Naver Blog

JavaScript var, let, const

JavaScript의 변수선언 방식에는 var, let, const 가 있다.varvar 을 이용해 변수를 선언할 경우 나중에 같은 이름의 변수를 선언하더라도 막지 않는다. 그렇기 때문에 코드가 복잡해질 경우, 해당 name이 무엇을 나타내는지 정확히 알 수 없고, 에러가 뜨지 않아 해당 변수가 이미 사용되었는지 알 수 없다.따라서 const 나 let 을 이용하는 것이 좋다.let과 constlet 을 이용하여 변수를 선언하는 경우 위처럼 같은 이름의 변수를 중복 선언한다면 error가 발생하여 막아준다. 따라서 같은 이름의 변수를 사용하는 일이 생기지 않는다.const 를 이용하여 변수를 선언해 줄때에도 마찬가지로 같은 이름의 변수를 중복 선언하면 error가 발생한다.......

Naver Blog

JavaScript ES6, ES11

JavaScript를 공부하다 보면 ES6, ES11이란 말이 나온다.이는 JavaScript의 버전이라고 할 수 있다.ES6은 ES2015라고도 하며 2015년에 출시된 JavaScript를 의미한다.ES11 은 ES2020을 말하며 2020년에 출시된 JavaScript를 의미한다.버전이 올라감에 따라 추가되는 문법들이 있으므로 확인하는 것이 좋다.

Naver Blog

JavaScript Template literals

흔히 JavaScript를 사용하다 보면 다음과 같은 경우가 흔하다.위와 같이 작성하려면 띄어쓰기도 신경써야하고 여러모로 불편하다. 이를 해결하기 위한 방법이 Template literals이다.위 코드에서 ${text} 부분이 이를 적용한 것인데, 해당 부분에 text 즉, Template literals가 들어가게 된다.여기서 주의할 점은 양 끝에 '나 " 가 아닌 `을 이용한다는 점이다. ` 는 보통 키보드에서 1 key 옆, esc 아래에 있는 버튼이다.

Naver Blog

CSS z-index

CSS style에는 z-index라는 값이 있다. 화면위에 쌓이는 순서를 의미한다.이때 중요한점은 z-index사용시 position값이 지정되어있어야한다.( position에 대한 정보 )위 코드는 아래와 같이 나타나게 되는데 z-index를 유심히 살펴보면 z-index가 클수록 화면에 위쪽에 표시되는것을 알 수 있다.주의할 점z-index사용시 position값이 지정되어있어야한다.

Naver Blog

[암호개론] AES(Advanced Encryption Standard)

AES: DES가 깨지고 3DES는 오래걸리는 문제 때문에 등장하게된 향상된 암호화 표준으로 대칭키 암호의 한 종류특징- 128비트를 한 블럭으로 하는 블럭 암호화 방식- 키의 길이는 128/192/256 비트 사용- SP Network 방식으로 키 값에 따라 각각 10, 12, 14 라운드로 구성- DES의 경우 64비트를 반으로 나누어 32비트씩 암호화 하는 방식이지만 AES는 한 라운드에서 128비트 전체를 암호화 함- 각 라운드는 SubBytes, ShiftRows, MixColumns, AddRoundKey 로 구성1. State(상태) 구성128비트의 입력받은 평문을 8비트(1바이트) 씩 쪼개어 State를 구성한다.예를 들어, 입력이 A1 11 13 15 14 1A BA 30 21 23 16 49 20 B3 AB 61 로 들어온다면 아.......

Naver Blog

[암호개론] 여러가지 블록암호

AESDES3. IDEA- 1990년 스위스에서 개발한 암호화 방식- 암호화 속도가 DES보다 빠름- 64비트 블록과 128비트 키를 이용- 8라운드에 Feistel 구조- 전자우편 보안 PGP에 이용- 유럽 표준RC5- 1994년 Rivest개발- 블록크기는 32, 64, 128 비트, 키 0~2040비트- 라운드 0~255 라운드- 키와 라운드가 가변적이어 사용자가 원하는 성능과 안전성 수치 조절 가능SEED- 1998년 KISA 개발- 128비트 블록을 암호화하고 128비트 키를 이용- 16라운드에 Feistel구조- 2009년 SEED 256개발 ( 128비트 블록, 256비트 키, 24라운드)- 인터넷 뱅킹, 전자상거래 이용ARIA- 128비트 블록을 암호화하고 128/ 192/ 256 비트의 키를 이용- SP Network 구조로 키 값에.......

Naver Blog

[암호개론] LFSR(선형 피드백 시프트 레지스터)

LFSR: 주어진 초기 비트값(seed)와 정해진 방법을 통해 key stream을 생성하는 방법예시초기 비트 (seed) : 0001생성방법 : a4+i = ai + ai+2 ( + : XOR )위와 같은 조건일 경우 a5 = a1 + a3 = 0 + 0 = 0, a6 = a2 + a4 = 0 + 1 = 1 .. 쭉 구할 수 있다. ( + : XOR )따라서 000101.... 하면서 나아가게 된다.쭉 구해보면 000101000101... 해서 주기가 6인 key stream이 생성된다.다음 자리 수를 얻기 위해 초기에는 0001을 이용하고 그다음은 0010 그다음은 0101 식으로 우측으로 한칸씩 이동하여 다음 자리를 얻게 된다.이러한 특징때문에 시프트 레지스터 라고 한다.그림으로 표현하면 다음과 같이.......

Naver Blog

[암호개론] A5/1

A5/1: 3개의 LFSR을 합치고 클록을 이용하여 비선형성을 추가하여 key stream을 생성하는 방법위 그림처럼 19, 22, 23 길이의 seed를 갖는 LFSR 3개를 이용해 key stream을 생성한다. 따라서 64비트의 초기 비트(seed)값이 필요하다.LSFR 3개를 합쳐 key stream을 생성하므로 최대 주기는 (219-1)*(222-1)*(223-1)이 된다.이 때 주황색으로 색칠된 부분을 클록이라고 하는데, 이 부분에 있는 숫자에 따라 각 LFSR이 시프트할지 말지를 결정한다.만약 위에서 부터 각 클록의 값이 1, 0, 1 일 경우 1이 더 많으므로 1이 있는 부분은 시프트가 발생한다.즉 가운데 LFSR을 뺀 나머지 LFSR은 한칸씩 시프트 된다. 이러한 방식을 통해 LFSR에서 비선.......

Naver Blog

[암호개론] 스트림 암호

스트림 암호: 대칭키 암호의 한 종류로 비트 또는 바이트 단위로 암호화 하는 것암복호화 방식평문 + 키스트림 = 암호문암호문 + 키스트림 = 평문 ( + : XOR )따라서 키스트림을 어떻게 잘 생성하느냐가 관건특징- 빠른 암호화 속도와 낮은 에러 전달- 군사 및 외교용, 무선통신기기에 이용- LFSR, A5/1, RC4 등이 있음

Naver Blog

[정수론] Factoring

Factoring 이란 어떠한 수를 소수의 곱의 형태로 나타내는 것을 말한다.즉, 15 = 3 * 5, 24 = 23 * 3.어떠한 수 n = a0 + a1101+ a2102+ ... + ak10k의 형태로 쓸 수 있다.이 때 다음과 같은 성질들이 성립한다.즉 15946 가 2의 배수인지 5의 배수인지는 일의 자리 숫자가 2의배수인가 5의 배수인가만 보면 알 수 있다.3의 배수인지 9의 배수인지는 1+5+9+4+6 = 25가 3의 배수인지 9의 배수인지를 통해 알 수 있다.11의 배수인가는 6-4+9-5+1 = 7 이 11의 배수인지를 통해 알 수 있다. 7의 배수인지 13의 배수인지 11의 배수인지는 946-15=931이 7의 배수인지 13의 배수인지 11의 배수인지를 통해 알 수 있다.왜.......

Naver Blog

[정수론] 페르마의 작은 정리(Fermat's Little Theorem)

페르마의 작은 정리1)p가 소수이고 gcd(a,p)=1 이면, ap-1≡1 (mod p) 이다.2) p가 소수이면 ap≡ a (mod p)이다.1) 증명먼저 complete residue system에 대해 알아야한다. a의 complete residue system은 집합인데 그안에 모든 원소들이 mod a에서 서로 incongruent하고 원소의 개수가 a개인 집합이다. 즉 예를 들어 5의 complete residue system은 {1,2,3,4,5}, {-3,-2,-1,0,1},{10,16,12,23,29} 등이 있다. 이 때 연속적인 a개의 수는 complete residue system이 됨을 확인할 수 있고, {0,1,2,3,4} 와 같은 집합을 the least complete residue system 이라고 한다.만약 a*k ≡ a*j mod p 라면 gcd(a,p)=1이므로 k ≡ j mod p 가.......

1 2