본문 바로가기

Programming Language

(6)
SEED 암호화 - KISA 설명 KISA에서 SEED 암호화 소스코드를 제공하지만 오래전에 작성되었던 탓인지 python으로 된 파일이 없었다. 그래서 검색으로 여러 사이트를 참고해 암호화 클래스를 작성했다. SEED 암호화란? SEED는 128 bit의 대칭키를 이용하여 임의의 길이를 갖는 입력 메시지를 블록단위로 처리하는 128 bit 블록암호 알고리즘이다. - 대칭키 암호화 => 암호화 키와 복호화 키가 같은 암호 방식 - 128bit = 16 byte bit | byte | hex bit 컴퓨터에서 사용되는 가장 작은 데이터 단위 2진수로 0과 1을 가질 수 있다. byte 8 bits으로 구성된다 (즉, 8 bits = 1 byte) bits으로 이루어진 byte array는 2진수로 이루어진 데이터이지만 사람이 읽기 어려워 ..
SEED 암호화 코드 - KISA 암호화 클래스 from cryptography.hazmat.backends.openssl.backend import backend from cryptography.hazmat.primitives.ciphers import algorithms, base, modes import base64 class SEED128: def encrypt(self, key, txt): key_bytes = self.convert_key_to_byte_array(key) padded_txt_bytes = self.convert_txt_to_padded_byte_array(txt) encrypted_txt_bytes = self.seed_encrypt(key_bytes, padded_txt_bytes) b64_encrypted..
[번역] 최신 모드, "use strict" 원글 The modern mode, "use strict" 오랫동안 자바스크립트는 호환성 문제 없이 진화했다. 이전 기능은 변경되지 않으면서 새로운 기능이 언어에 추가 되었다. 이 사실은 기존에 작성한 코드가 절대 깨지지 않는다는 장점이 있었다. 하지만 단점은 자바스크립트의 제작자들이 한 실수나 불완전한 결정은 영원히 그 언어에 남게 된다는 것이다. 2009년 ECMAScript 5(ES5)가 등장하기 전까지는 그랬다. ES5는 언어에 새로운 기능을 추가했고 기존에 있던 몇 가지 기능들을 수정했다. 이전 코드가 계속 작동되도록 하기 위해 이러한 수정 내용은 기본적으로 해제되어 있다. "use strict"라는 특별한 지시어로 명시적으로 활성화해야 한다. "use strict" 지시어는 문자열 형태이다: ..
자바스크립트에서 자주 사용하는 고차 함수(forEach, filter, sort, map, reduce) - 2 일반적으로 반복문을 사용하려면 반복문을 어떻게 실행할지에 초점을 맞춰서 구현하게 된다. 따라서 반복문의 시작점 및 초기값인 counter, 반복문 멈추는 기준이 되는 exit condition과 끝나는 조건에 도달할 때까지 counter를 증가시키는 iterator를 가지게 된다. 즉, 반복문을 구현하려면 이 세 가지가 모두 필요하다. 이와 반대로 고차 함수를 이용한 반복문은 어떻게 실행할지 보다는 무엇을 할지에 초점을 맞춘다. 각각의 반복을 구체적으로 어떻게 진행할지를 명시하기보다는 원하는 결과를 얻기 위한 과정만을 제시한다. 이 둘의 차이점이 더 와 닿을 수 있도록 앞으로의 예제에서 일반적인 반복문(for, while)과 고차 함수를 이용한 반복문을 둘 다 보여줄 것이다. 그럼 이제, 알고 있으면 편..
자바스크립트에서 자주 사용하는 고차 함수(forEach, filter, sort, map, reduce) - 1 자바스크립트를 함수형 프로그래밍에 알맞은 언어로 만들어주는 특성이 바로 자바스크립트가 고차 함수 개념을 받아들인 다는 것이다. 따라서 고차 함수가 무엇인지 소개하고 앞으로 개발하면서 자주 사용하게 될 고차 함수들의 사용법을 설명하려고 한다. 고차 함수(Higher-Order Function)란? 고차 함수는 함수를 인자로 받거나 함수를 반환하는 함수를 말한다. 이때 다른 함수(caller)의 인자(argument)로 전달되는 함수를 콜백 함수(callback function)라고 한다. 콜백 함수를 전달받은 함수는 이 콜백 함수를 호출(invoke)할 수 있다. 조건에 따라서 콜백 함수의 실행 여부를 결정할 수 있고 여러 번 실행할 수도 있다. // 다른 함수를 인자로 받는 경우 function doub..
JavaScript란 이름은 어떻게 지어졌을까? "JavaScript? Java랑 관련 있나?" JavaScript를 처음 들어본 사람이라면 한 번쯤 생각해봤을 질문이다. 하지만 이것은 큰 오해다. 자바스크립트 Brendan Eich가 처음 언어를 만들었을 때는 이름을 Mocha라고 지었다. 추후에 Netscape사 안에서 사용될 때는 LiveScript라는 이름을 가지게 되었다. 하지만 공식적으로 언어를 알리고 이름을 정할 때는 JavaScript라는 이름이 선택되었다. 왜 자바스크립트라는 이름을 사용했을까? JavaScript라는 이름이 사용된 이유는 언어가 Java 개발자들을 타깃으로 하고 있었고 당시에 가벼운 프로그램을 지칭하기 위한 단어로 script가 많이 사용되었기 때문이다. 그리고 이 가벼운 "script"가 당시에 생긴 지 얼마 안 된..