영어 암호 만들기 - yeong-eo amho mandeulgi

문자 및 사용 문자 생성 개수를 입력하고 "비밀번호를 생성"버튼을 클릭합니다. 그러면 쉽게 임의의 암호를 생성 할 수 있습니다.
알파벳의 대문자, 소문자, 숫자, 기호 등을 조합하여 안전하고 긴 암호를 자동으로 생성 할 수 있습니다.
이 사이트의 암호 생성 및 저장 등은 모두 무료로 사용할 수 있습니다.

문자

4 자에서 1000 자까지 원하는 길이로 생성 할 수 있습니다.
슬라이더를 움직여 입력 할 경우 100 자까지이므로, 그 이상의 경우는 직접 숫자를 입력하십시오.
설정 "같은 문자를 사용하지 않음"체크가되어 있다면, 사용 문자 이상의 문자가 될 수 없습니다.

사용 문자

알파벳 대문자, 알파벳 소문자, 숫자, 기호에서 하나 이상의에서 원하는 것을 선택할 수 있습니다.
각각의 사용 문자는 다음과 같이되어 있습니다.

알파벳 대문자ABCDEFGHIJKLMNOPQRSTUVWXYZ
알파벳 소문자abcdefghijklmnopqrstuvwxyz
숫자0123456789
기호!#$%&=~/*-+()_@

만들 수

1 개에서 10,000 개까지 원하는 개수의 암호를 생성 할 수 있습니다.
슬라이더를 움직여 입력하면 1000 개까지이므로, 그 이상의 경우는 직접 숫자를 입력하십시오.
만들 수가 많은 경우 PC의 속도에 따라 시간이 걸릴 수 있으므로주의하시기 바랍니다.

설정

"비슷한 문자를 사용하지"에 체크를하면 "Il1" 등 비슷한 문자가 포함 된 암호를 생성 할 수 있습니다.
읽으 실수 나 전달 오류로 인한 실수를 줄일 수 있습니다.
체크 한 경우에 생략 된 문자는 다음 문자입니다.

Il1Oo0

"같은 문자를 사용하지"에 체크하면 동일한 문자가 포함 된 암호를 생성합니다.
여기에 체크가되어있을 때 사용할 수있는 문자보다 글자 수가 많다고 오류되므로주의하시기 바랍니다.

다운로드

비밀번호를 생성 한 후 "비밀번호를 다운로드"버튼을 클릭하면 암호 목록을 텍스트 파일로 다운로드 할 수 있습니다.

안녕하세요!! 이번에는 암호학 관련된 글로 찾아왔어요 ㅎㅎ

오늘 살펴볼 암호법은 가장 오래된 암호법 중 하나로 꼽히면서~~~~ 가장 간단한~~ 암호학의 시초라 할 수 있는 시저 암호법입니다.

시저 암호 (Caesar Cipher)

시저 암호는 카이사르 암호라고도 해요 ㅎㅎ 그 역사적으로 유명한 카이사르가 암호학에도 획을 긋고 갔네요 ㅎㅎ

시저랑 카이사르랑 뭔 상관이냐 ㅎㅎ

카이사르의 이름은 라틴어로 'Gaius Iulius Caesar' 이렇게 작성됩니다. 뒤에 보면 '시저'라고 읽히죠?ㅎㅎ 즉 카이사르 이름에서 딴 네이밍입니다.

영어 암호 만들기 - yeong-eo amho mandeulgi
카이스라는 기원전 100년전 사람이야요

기원 후 2세기경에 세토니우스가 시저의 생애라는 책을 썼는데 그 가운데 다음과 같은 글이 있었다고 합니다.

시저가 키케로나 친지들에게 비밀리에 편지를 보내고자 할 때  사용한 암호가 있다. 시저는 다른 사람들이 알아보지 못하도록 문자들을 다른 문자들로 치환하였다. 다른  사람이 암호를 풀어 내용을 파악하려면 각 문자대신 알파벳 순서로  보았을 때 그 문자부터 시작하여 4번째 앞에 오는 문자로, 즉 예를 들어 D는 A로 바꾸어야 했다.

시저 암호화, 복호화 방법?

영어 암호 만들기 - yeong-eo amho mandeulgi

알파벳을 암호화 할 때 썼는데요. 가장 오래된만큼 엄청 간단합니다. 3글자씩 밀려서 쓰는거예요. 즉 평행이동입니다.

무슨 말이냐? 알파벳이 ABCDEFG...이런식으로 가니까 A는 3글자 뒤인 B,C,D! D로 변경이 되는겁니다.

영어 암호 만들기 - yeong-eo amho mandeulgi
출처: https://inventwithpython.com/chapter14.html

첫 번째 라인은, A부터 Z까지 알파벳을 나열해놨는데 이게 암호화하기 전의 평문이라고 생각합시다!

그리고 그 밑에 라인은 알파벳을 시저방법으로 암호화한 결과물이예요 ㅎㅎ

그냥 3칸씩 뒤로 미룬거밖에 읍음... 여기서 암호를 도와주는 키는 3이 되겠죠 ㅎㅎ

키 공간

어떤 암호로 사용할 수 있는 모든 키의 집합을 키 공간이라고 합니다. 키는 알파벳과 일대일 대응 되므로 가능한 개수는 총 26개가 될거예요. 그 이후부터는 순환이니까!! 

키 공간은 1부터 26이 되고 키 공간의 크기는 26이 됩니다. ㅎㅎㅎ 

복호화 Decrypt

그럼 반대로 이 암호를 푸는 복호방법은?

세칸씩 떙기면 되겠죠???ㅎㅎ그러므로 복호화때의 키는 -3..

영어 암호 만들기 - yeong-eo amho mandeulgi

만약 암호화된 문장이 ABCDEF이고 시저 방식으로 암호화되어있는거라면

세칸씩 땡겨서 푸는건 XYZABC가 되겠죠 ㅎㅎ

순환하기 때문에 수식으로는 

영어 암호 만들기 - yeong-eo amho mandeulgi

이렇게 표현할 수 있습니다.

카이사르 암호법으로 'HELLO'를 암호화하면,

'KHOOR'이 될거예요. ㅎㅎ 이렇게 편지를 보내면 편지받는 사람은 -3칸 해서 'HELLO'를 얻어내는거죠 

영어 암호 만들기 - yeong-eo amho mandeulgi

이런 시트지를 이용하면 암산없이 쉽게 치환 가능해요

이렇게 일정 규칙에 의해 특정 문자를 바꾸는 암호법을 치환방법이라고 하고 저렇게 순환되기 떄문에 순환암호라고도 합니다.

▼잠깐? 왜 3칸일까요?

아무 이유 없대요 ㅎㅎ 그냥 시저가 그게 편했답니다.ㅎㅎ 10으로 하던 5로 하던 쌍방 합의만 있으면 상관 없겠죠 ㅎㅎ 그냥 어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식 자체를 시저 암호라고 합니다. 

보안성과 실질 효과

엄청 깨기 쉽겠죠. 걍 알파벳을 3자리만 땡기면 암호가 풀리는데.. 근데 이런 간단하고 초심플한 암호방식이 실제로 효과가 있었나, 우리가 보기엔 쉬워보이지만 기원 100년전 상상도 하기 힘든 과거 당시로서는 아무나 쉽게 해독할 수 없었다고 합니다. (물론 오늘날에는 현실적이지 않은 방법이죠 ㅎㅎ, 이동 크기를 3에서 어떤 값으로 바꾼다해도, 알파벳 가능한 25자리 이동값을 모두 때려넣어보면 언젠간 풀리니까요 ㅎㅎ) 하지만 당시 그 시절 사람들에게는 암호라는 개념 자체가 익숙치 않았어요 ㅎㅎ

단점

카이사르암호법에는 큰 단점이 있는데 바로 중복되는 단어가 나열될 경우 매우 유추하기 쉬워진다는 겁니다.

예를 들어 KILL의 경우 NLOO인데  이 경우 단어가 4자리면서도 뒤에 같은 알파벳이 2번 나타난다는것을 유추할 수 있습니다.

따라서 kill, call, sell, yell 등 올 수 있는 단어가 한정되어 있죠. 또,  즉 L은 O보다 3글자 뒤에 있는 숫자라는 걸 알 수 있어요. (순서가 LMNO이니까) 그럼 call, sell, yell등은 다 탈락이죠.. 알아내기가 매우 쉬워집니다.

이러한 이유로 암호화를 할때 반복되는 알파벳은 생략하기도 했습니다. NLOO대신 NLO로 암호화하는 것이죠.

ㅎㅎ 아이러니하게 카이사르는 이 암호를 해독하지 못해 암살당했다고 합니다.

구현법

시저를 구현하는건 매우 쉬워요 ㅎㅎ 알파벳은 26자이고 이 룰에서 순환된다는것만 알면!

주의해야할 점은 순환이예요 ㅎㅎ a-z가 끝이 아니라 abcd...xyzabcd...이렇게 이어간다는거.

(Z를 3칸 뒤로 하면 C가 된다는 얘기죠 ㅎㅎ) 이를 해결하려면 모듈 연산자 방식이 필요하겠죠?

영어 암호 만들기 - yeong-eo amho mandeulgi

n이 움직이는 키가 된다면 암호화 방식은 위와 같은 공식으로 표현할 수 있을 거예요 ㅎㅎ

이걸 암호 공식으로 표현하자면

영어 암호 만들기 - yeong-eo amho mandeulgi

이렇게 정리할 수 있습니다.

보통 암호공식을 쓸 때 저렇게 쓰는데 E는 Encrypt로 암호화하는걸, D는 Decrypt로 복호화하는 수식을 의미합니다.

k는 key, p는 평문, c는 암호화된 암호문을 의미해요

c = E(k,p) : 키와 평문을 암호화하면 암호문 c가 나온다! 라는 수식이 되는거죠 ㅎㅎ

무튼 시저암호법의 자세한 전체 코드는 밑에 연습문제들을 참고하면 확인할 수 있습니다.

참고

시저 관련된 알고리즘 문제들이야요 ㅎㅎ

프로그래머스 코딩테스트 연습>연습문제>시저 암호

[프로그래머스] 시저 암호 문제 및 해설 (C, C++, JAVA 자바)

오랜만에 돌아온 프로그래머스 문제 풀이예요 ㅎㅎ [Level 1] 시저 암호 문제 어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 합니다. 예를 들어 AB는 1만..

jhnyang.tistory.com

영어 암호 만들기 - yeong-eo amho mandeulgi

백준 알고리즘 1893번

시간 나면 한번 풀어보는 것도..

오늘은 여기까지입니다! 도움되셨다면, 공감, 보답광고, 덧글 등은 열심히 작성하는 도움자에게 힘이됩니다 :)

오늘도 좋은하루보내세요

'별걸다하는 IT > 기타IT' 카테고리의 다른 글

[보안 상식] 스캠(scam)이란? 로맨스 스캠, 비즈니스 스캠, 신용 사기  (0) 2019.11.03
안드로이드 핸드폰 저장 공간 관리하기. 모바일 내 파일, 기타파일 정리하기, SD카드로 옮기기  (4) 2019.10.28
.zi파일 확장자, ZI파일 무엇이고 어떻게 압축을 푸는가? ex파일?  (0) 2019.10.15
[html/css] element 또는 요소(div) 가운데 정렬시키는 몇 가지 방법 (position, margin, flex 등등)  (12) 2019.10.09
중앙처리장치란? CPU란? central processing unit, 제어장치, 연산장치, 레지스터  (0) 2019.10.07