10월, 2019의 게시물 표시

디피-헬먼 키 교환 알고리즘(Diffie-Hellman key exchange algorithm)

디피-헬먼 키 교환 알고리즘(Diffie-Hellman key exchange algorithm)에 대해서 알아보겠습니다. 디피-헬먼 키 교환 알고리즘은 비밀키와 공개키를 활용하여 암호 키를 교환 방식입니다. ​ 우선 철수와 가희로 설명하겠습니다. 철수와 가희는 소수인 'ㅅ'을 선택합니다. 철수와 가희는 'ㅅ'의 원시근인 'ㅇ'을 선택합니다.(원시근의 경우 ㅅ-1과 같거나 작습니다.) 철수와 가희는 'ㅅ'과 'ㅇ'의 값을 알고 있습니다. ​ 철수는 임의의 정수 'ㅊ'을 몰래 선택합니다. 가희도 임의의 정수 'ㄱ'을 몰래 선택합니다. 철수는 철 = ㅇ^ㅊ (mod ㅅ)를 구합니다. 가희는 가 = ㅇ^ㄱ (mod ㅅ)를 구합니다. 철수와 가희는 '철'과 '가'의 값을 공유합니다. ​ 철수는 가희로부터 받은 '가'를 이용하여 비밀 값 'ㅂ'을 구합니다. ㅂ = 가^ㅊ (mod ㅅ) ​ 가희는 철수로부터 받은 '철'을 이용하여 비밀 값 'ㅂ'을 구합니다. ㅂ = 철^ㄱ (mod ㅅ) ​ 'ㅂ'의 값이 같은 이유는 가^ㅊ (mod ㅅ) = ㅇ^ㄱㅊ (mod ㅅ) = 철^ㄱ (mod ㅅ)이기 때문입니다. ​ 철수와 가희가 서로 공유하는 과정을 우리는 엿볼 수 있기 때문에, 'ㅅ', 'ㅇ', '철', '가'는 우리가 알 수 있습니다. 하지만, 'ㅊ'과 'ㄱ'은 각자 개인만 알기 때문에, 'ㅂ' 값을 찾기가 어렵습니다. ​ ​ 영어 p, g, a, b, A, B로 설명되어 있는 것을 보니 볼 때마다 헷갈려서 한글로 한 번 수식을 ...

수학 원시근(Primitive root modulo n)

원시근(Primitive root modulo n)에 대해서 알아보겠습니다. φ(n)의 집합 A가 있고, 원소로는 {a, b, c, d}를 포함하고 있을 때, a부터 d까지 차례로 원소 값 하나씩 거듭제곱하여(a, a², a³, ...) 양의 정수 n으로 나눴을 때, 나머지가 집합 A의 원소 값{a, b, c, d}을 전부 포함하고 있는 원소 값을 찾습니다. 만약 원소 b가 φ(n)의 값을 모두 가지게 된다면, b는 n의 원시근이 됩니다. ​ 예시를 들어보겠습니다. A = φ(5) = {1, 2, 3, 4} ​ ​ 1 (mod 5) = 1, 1 (mod 5) = 1 ..... 결과가 {1} 2( mod 5) = 2, 4 (mod 5) = 4, 8 (mod 5) = 3, 16 (mod 5) = 1, ... 결과가 {1, 2, 3, 4} (원시근) 3 (mod 5) = 3, 9 (mod 5) = 4, 27 (mod 5) = 2, 81 (mod 5) = 1, ... 결과가 {1, 2, 3, 4} (원시근) 4 (mod 5) = 4, 16 (mod 5) = 1, 64 (mod 5) = 4, ... 결과가 {1, 4} ​ 2와 3만이 φ(5) 원소 {1, 2, 3, 4}가 나옵니다. 따라서, 2와 3은 5의 원시근입니다. ​ 끝. 카테고리: Math

수학 나머지(modulo)

나머지(modulo)에 대해서 알아보겠습니다. 나머지는 어떤 수를 나누었을 때, 남는 값을 나타냅니다. ​ 일반적인 나누기는 몫을 나타냅니다. 14 ÷ 8 = 1.75 ​ 나머지 표현은 다음과 같이 합니다. 14 (mod 8) = 6 또는 14 ≡ 6 (mod 8) ​ Modulo의 우리나라 용어는 법(法)이 있습니다. 법 8에 대한 14의 값은 6이다. 6과 14는 법 8에 대해 합동이다. 끝. 카테고리: Math

수학 서로소(Coprime)

서로소(Coprime)에 대해서 알아보겠습니다. 서로소는 양의 두 정수의 관계를 나타내는 말입니다. 양의 정수 n과 양의 정수 m이 있습니다. n과 m의 최대 공약수(Greatest Common Divisor)가 1인 경우 서로소가 됩니다. ​ 예시로 알아봅시다. 양의 정수 n을 14, 양의 정수 m을 15로 정합니다. 14의 약수는 1, 2, 7, 14 ​ 15의 약수는 1, 3, 5, 15 ​ 14와 15, 모두에 속한 가장 큰 약수는 1이 됩니다. 따라서 14와 15는 서로소가 됩니다. 끝. 카테고리: Math

수학 오일러 파이 함수(Euler's phi(totient) function)

오늘은 오일러 파이 함수(Euler's phi(totient) function)에 대해서 알아보겠습니다. φ()로 나타냅니다. ​ 오일러 파이 함수는 임의의 양의 정수 n을 1부터 n까지 숫자와 서로소 비교를 하여 구한 서로소 개수입니다. ​ 예제를 들어 쉽게 말하면, 임의의 양의 정수 n을 5로 정해봅시다. 표현은 φ(5)로 나타냅니다. ​ 5와 1은 서로소입니다. 5와 2는 서로소입니다. 5와 3은 서로소입니다. 5와 4는 서로소입니다. 5와 5는 서로소가 아닙니다. ​ φ(5) = 4가 됩니다. 끝. 카테고리: Math

Python urllib.parse.quote()

이미지
사용 버전: Python 3.6.8 사용 프로그램: Atom 1.40.1 x64 ​ 파이썬 urllib.parse.quote()에 대해서 알아보겠습니다. 괄호 안에는 string, safe, encoding, errors 인자가 들어갑니다. ​ urllib.parse.quote()는 아스키코드 형식이 아닌 글자를 URL 인코딩 시켜줍니다. ​ String 인자에는 string, bytes 형식이 들어갑니다. String 형식. Bytes 형식 Safe 인자에는 URL encoding에서 제외할 문자를 넣습니다. 기본으로 '/'이 설정되어 있습니다. Encoding 인자에는 인코딩 이름이 들어갑니다.  string에 들어가는 문자와 맞지 않으면 오류가 나옵니다. 기본적으로 'utf-8'이 들어갑니다. Error 인자에는 'strict', 'ignore', 'replace', 'xmlcharrefreplace', 'backslashreplace', 'namereplace', 'surrogateescape', 'surrogatepass'가 들어갑니다. 기본적으로 strict가 설정되어 있습니다. unicode 오류를 알려줍니다. Ignore의 경우 오류는 무시하고, 변환할 수 있는 것만 변환합니다. Replace는 에러 글자를 '?'로 변환해줍니다. 그리고 quote(...

확인해야 할 API

확인해야 할 API 제품키 문자열 비교 구문 (Visual Basic) - __vbaVarTstEq - __vbaVarTstNe - __vbaVarCmpEq - __vbaStrCmp - __vbaStrComp - __vbaStrCompVar ​ DialogBoxes (Visual C++) - DialogBoxes - GetDlgItem - GetDlgItemInt - GetDlgItemTextA - GetWindowTextA - GetWindowWord ​ MessageBoxes (Visual C++) - MessageBeep - MessageBoxA - MessageBoxExA - SendMessageA - SendDlgItemMessageA ​ Registry Access (Visual C++) - RegCreateKeyA - RegDeleteKeyA - RegQueryValueA - RegQueryValueExA - RegCloseKeyA - RegOpenKeyA ​ Read/Write File (Visual C++) - ReadFile - WriteFile - CreateFileA ​ Read from INI file (Visual C++) - GetPrivateProfileStringA - GetPrivateProfileIntA - WritePrivateProfileStringA ​ Read data (Visual C++) - LoadStringA - lstrcmpA - MultiByteToWideChar - WideCharToMultiByte - wsprintfA ​ Time data (Visual C++) - GetFileTime - GetLocalTime - GetSystemTime - GetSystemTimeAsFileTime - SetTimer - SystemTimeToFileTime ​ Creating a Nag window (Visual C++) - CreateWindowExA - ShowWindow - UpdateW...

Bowling Smash-Blender

이미지
사용 버전: Blender 2.80 Cycles Eevee 끝. 카테고리: 3D Model