분류 전체보기 258

21.12.11 블록 암호

기밀 정보를 정해진 블록 단위로 암호화하는 대칭키 암호 시스템 만약 암호화하려는 정보가 블록 길이보다 길 경우는 특정 운용 모드가 사용된다. 블록 암호에 대한 안전성 증명 방법으로는 선택평문 공격인 차분 공격 Differential Cryptanalysis 와 알려진 평문 공격인 선형 공격 Linear Cryptanalysis 등이 있다. 블록 암호 구조에는 페스탈 Feistel 구조와 SPN 구조가 있다. Feistel 페스탈 구조는 암복호화 과정에서 역함수가 필요 없다는 장점이 있지만 구현 시 스왑 단계 때문에 연산량이 많이 소요되며 암호에 사용되는 라운드 함수를 안전하게 설계해야 한다는 단점이 있다. DES가 대표적인 예이다. 한국에서 페스탈 구조 기반으로 설계된 암호는 SEED가 있다. SPN 구..

암호학 2021.12.11

21.12.11 암호 공격

1. 암호문 단독 공격 Ciphertext Only Attack 공격자가 암호문만 가지고 있는 상황에서 공격하는 유형 공격자는 암호문 이외의 어떤 정보도 가지고 있지 않기 때문에 공격자 입장에서 가장 어렵다. - 가능한 모든 값을 대입해보는 무차별 대입 공격(채굴과 비슷한 원리) - 암호문에 쓰인 문자의 빈도수 분석이나 문장의 특성 등을 추정하여 해독하는 방법 2. 알려진 평문 공격 Known Plaintext Attack 공격자가 일정 부분의 평문과 이에 대응하는 암호문을 가진 상태에서 공격하는 유형 단독 공격보다는 효과적 3. 선택 평문 공격 Closen Plaintext Attack 공격자가 암호화 프로그램에 접근! 공격자가 많은 수의 평문을 암호문으로 만들 수 있는 상태에서 공격하는 유형 공격자는..

암호학 2021.12.11

21.12.09 try, catch, finally

try{ 코드가 문제 없다면 정상적으로 실행되는 부분 throw문에 의해 직접 예외를 발생시킬 수도 있고 메서드의 호출에 의해 예외가 발생할 수도 있다. }catch(e){ try 블록에서 예외가 발생할 경우에만 실행되는 부분 지역 변수 e를 사용하여 Error 객체를 확인할 수 있다. }finally{ 예외 발생 유무에 관계없이 try 블록이 종료되면 실행되는 부분 try catch 문을 뒷정리하는 역할을 한다. } let i = 0, total = 0; while (i < a.length){ try{ if(typeof a[i] != 'number' || isNaN(a[i]))){ continue; }catch(e){ console.log(e); } total += a[i]; }finally{ i++;..

JavaScript 2021.12.09

21.12.01 brew 안에서 node 버전 재설정

https://jemerald.tistory.com/95 21.10.22 command not found: brew Homebrew 공식 페이지에서 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" 위 명령어를 통해 Homebrew를 설치한 뒤 brew 명령어를 실행했을 때, zsh: comman.. jemerald.tistory.com brew를 설치했는데 터미널을 껐다가 키면 not found 에러가 뜬다. 위에서 그것을 해결하고 node 17.0.1 버전이 귀신같이 튀어나오는 문제를 해결하기 위해 brew 안에서 node를 지웠다가 깔았다. https://apple.stackex..

mac zsh 2021.12.01

21.11.11 pagination

const followers = await client.use .findUnique({where: username}) .followers({ take: 5, skip: (page - 1) * 5 }) skip/take const results = await prisma.post.findMany({ skip: 3, take: 4 }) findMany를 사용해 posts들을 불러온다. 앞에서부터 3가지 post를 skip한다. //skip은 생략하는 데이터 갯수 skip된 post 직후의 4개의 post를 취한다. //take는 가져올 데이터 갯수 skip/take는 순서에 상관없이 페이지네이션이 이루어진다. - offset pagination: 맨 앞에서부터 몇 개 skip하고 몇 개 가져오기 const ..

Prisma 2021.11.12

21.11.06 functional programming

functional programming template >>example //함수 A를 호출 //함수 B를 인자로 받아서 함수 C를 호출 //함수 B를 반환 const A = (B) => (C) => { return B } >>protectedResolver export const protectedResolver = (ourResolver) => (root, args, context, info) => { if(!context.loggedInUser){ return { ok: false, error: 'Please log in to perform this action', } } return ourResolver(root, args, context, info) } >>export const protecte..

Node.js 2021.11.07