암호 해킹으로 배우는 파이썬의 기초 (암호학과 파이썬을 함께 배우자)

암호 해킹으로 배우는 파이썬의 기초 (암호학과 파이썬을 함께 배우자)

$36.18
Description
암호 해킹과 파이썬 코딩을 모두 맨땅에서 시작하는 책이다. 암호학도 파이썬도 모르는 사람뿐만 아니라, 프로그래밍 경험이 거의 없는 사람도 볼 수 있는 책이다. 그러나 이 책은 프로그래밍의 기초에만 머무르지만은 않는다. 후반에서는 현대 암호학의 정수인 공개 키 기반 암호까지 다룬다. 암호학과 파이썬을 학습하는 과정을 지루하지도 가파르지도 않게 구성한 훌륭한 안내서다.
저자

알스웨이가트

소프트웨어개발자이자기술서저자로활동중이며샌프란시스코에살고있다.가장좋아하는프로그래밍언어는파이썬이며몇몇파이썬오픈소스모듈의개발자다.저술한다른책들은웹사이트(https://inventwithpython.com/)에서크리에이티브커먼즈라이선스로자유롭게사용할수있다.키우고있는고양이의체중은12파운드다.

목차

1장.종이암호화도구만들기
__암호화란무엇인가?
__코드와암호
__카이사르암호
__이중암호화가동작하지않는이유
__요약

2장.대화형셸프로그래밍
__간단한수학표현식몇가지
__변수에값저장하기
__요약

3장.문자열과프로그램작성
__문자열값으로텍스트다루기
__print()함수로값출력하기
__이스케이프문자출력
__작은따옴표와큰따옴표
__IDLE의파일편집기로프로그램작성하기
__“Hello,World!”프로그램소스코드
__온라인diff도구로소스코드확인하기
__IDLE에서작성한프로그램을나중에다시보려면
__“Hello,World!”프로그램은어떻게동작하나
__요약

4장.뒤집기암호
__뒤집기암호프로그램소스코드
__뒤집기암호프로그램의실행예제
__주석과변수설정하기
__문자열길이알아내기
__while루프개요
__input()프롬프트로프로그램개선하기
__요약

5장.카이사르암호
__카이사르암호프로그램소스코드
__카이사르암호프로그램예제실행
__모듈가져오기와변수설정
__상수와변수
__for루프구문
__if구문
__in과notin연산자
__find()문자열메소드
__symbol암호화/복호화
__화면에표시하고translated복사하기
__다른심볼도암호화하기
__요약

6장.무차별대입법으로카이사르암호해킹하기
__카이사르암호해킹프로그램의소스코드
__카이사르암호해킹프로그램의실행예제
__변수설정
__range()함수를이용한순환문
__message복호화
__문자열포맷팅을이용해key와복호화된message출력하기
__요약

7장.전치암호
__전치암호의동작원리
__전치암호프로그램소스코드
__전치암호프로그램예제실행
__def문으로자신만의함수만들기
__아규먼트로키와메시지전달하기
__리스트데이터유형
__전치암호알고리즘
__대입연산자의확장
__message를currentIndex로돌아다니기
__join()문자열메소드
__리턴값과return구문
__변수__name__
__요약

8장.전치암호복호화
__전치암호를종이로해독하는방법
__전치암호복호화프로그램소스코드
__전치암호복호화프로그램의실행예제
__모듈가져오기와main()함수설정하기
__message를key로복호화하기
__main()함수호출
__요약

9장.테스트프로그램작성법
__전치암호테스트프로그램의소스코드
__전치암호테스트프로그램실행예제
__모듈가져오기
__의사난수생성하기
__무작위문자열만들기
__다양한message테스트하기
__암호화가제대로동작했는지확인하고프로그램끝내기
__main()함수호출
__테스트프로그램테스트하기
__요약

10장.파일암호화및복호화
__평문파일
__전치파일암호프로그램의소스코드
__전치파일암호프로그램실행예제
__파일작업하기
__main()함수지정
__파일이존재하는지알아보기
__문자열메소드로더욱유연한사용자입력만들기
__입력파일읽기
__암호화/복호화에걸린소요시간측정
__출력파일쓰기
__main()함수호출
__요약

11장.영어문장감지프로그램
__어떻게컴퓨터로영어를이해할수있을까?
__detectEnglish모듈의소스코드
__detectEnglish를사용한예제
__코드도입부와상수설정
__딕셔너리데이터유형
__사전파일구현
__message에들어있는영어단어수세기
__영문자가아닌글자제거하기
__영어단어판정
__요약

12장.전치암호해킹
__전치암호해킹프로그램의소스코드
__전치암호해킹프로그램의실행예제
__모듈가져오기
__삼중따옴표로여러줄의문자열처리하기
__해킹된메시지출력하기
__해킹된메시지얻기
__main()함수호출
__요약

13장.아핀암호를구현하기위한모듈러연산모듈
__나머지연산
__나머지연산자
__최대공약수를계산하기위한인수찾기
__복수할당문
__GCD를찾는유클리드알고리즘
__곱셈암호와아핀암호의동작원리이해하기
__cryptomath모듈소스코드
__요약

14장.아핀암호프로그래밍
__아핀암호프로그램의소스코드
__아핀암호프로그램실행예제
__모듈,상수,main()함수설정
__키계산과유효성검증
__암호화함수작성
__복호화함수작성
__임의의키생성하기
__main()함수호출
__요약

15장.아핀암호해킹
__아핀암호해킹프로그램의소스코드
__아핀암호해킹프로그램의실행예제
__모듈,상수,main()함수설정
__아핀암호해킹함수
__main()함수호출
__요약

16장.단순치환암호프로그래밍
__치환암호의동작원리
__단순치환암호프로그램소스코드
__단순치환암호의실행예제
__모듈,상수,main()함수설정
__sort()리스트메소드
__래퍼(wrapper)함수
__translateMessage()함수
__임의의키생성하기
__main()함수호출
__요약

17장.단순치환암호해킹
__단어패턴에의한복호화
__해킹과정미리보기
__단어패턴모듈
__단순치환암호해킹프로그램의소스코드
__단순치환암호해킹프로그램의실행예제
__모듈과상수설정
__정규표현식으로글자찾기
__main()함수설정
__사용자에게해킹결과표시하기
__암호글자매핑생성하기
__hackSimpleSub()함수
__main()함수호출
__요약

18장.비즈네르암호프로그래밍
__비즈네르암호의다중글자키사용
__비즈네르암호프로그램의소스코드
__비즈네르암호프로그램의실행예제
__모듈,상수,main()함수설정
__List-Append-Join처리에의한문자열구축
__메시지암호화/복호화
__main()함수호출
__요약

19장.빈도분석
__텍스트의글자빈도분석하기
__글자빈도일치시키기
__글자빈도일치소스코드
__ETAOIN순서로글자를저장하기
__message의글자수세기
__튜플의첫번째요소얻기
__message의글자들을빈도순으로정렬하기
__message의빈도일치점수계산하기
__요약

20장.비즈네르암호해킹
__무차별대입사전공격을이용한비즈네르암호해킹
__비즈네르사전공격프로그램의소스코드
__비즈네르사전해킹프로그램실행예제
__비즈네르사전해킹프로그램설명
__카시스키분석을통한키길이찾기
__비즈네르해킹프로그램의소스코드
__비즈네르해킹프로그램실행예제
__모듈Import와main()함수설정
__반복문자열찾기
__간격값의약수구하기
__가장가능성이높은키길이찾기
__같은하위키로암호화한글자찾기
__후보키길이를이용한복호화시도
__해킹한메시지리턴
__main()함수호출
__해킹프로그램상수값변경하기
__요약

21장.일회용암호
__해킹이불가능한일회용암호
__요약

22장.소수찾기및생성
__소수란무엇인가?
__소수모듈의소스코드
__소수찾기모듈의실행예제
__나눗셈에의한소수판정알고리즘의원리
__나눗셈알고리즘을이용한소수검사의구현
__에라토스테네스의체
__에라토스테네스의체로소수만들기
__라빈밀러소수알고리즘
__큰소수찾기
__큰소수생성하기
__요약

23장.공개키암호를위한키생성
__공개키암호
__인증문제
__디지털서명
__공개키와개인키의생성과정
__공개키생성프로그램소스코드
__공개키생성프로그램의실행예제
__main()함수
__generateKey()함수로키생성하기
__makeKeyFiles()함수로키파일생성하기
__main()함수호출
__하이브리드암호시스템
__요약

24장.공개키암호프로그래밍
__공개키암호의동작원리
__공개키암호프로그램의소스코드
__공개키암호프로그램의실행예제
__프로그램기초설정
__암호화/복호화모드설정
__getBlocksFromText()로문자열을블록으로변환하기
__복호화함수getTextFromBlocks()사용하기
__encryptMessage()함수작성
__decryptMessage()함수작성
__키파일에서공개키/개인키읽기
__암호화파일쓰기
__파일복호화
__main()함수호출
__요약

부록.디버깅파이썬코드
__디버거로디버깅하기
__역방향암호프로그램디버깅
__브레이크포인트설정
__요약

출판사 서평

★이책에서다루는내용★
■실제동작하는프로그램에있는루프,변수,흐름제어구문결합
■복호화한메시지가올바른영어인지무작위문자열인지바로검출할수있는사전파일사용
■암호화/복호화코드가올바르게동작하는지검증할수있는테스트프로그램작성
■모듈러연산으로메시지를암호화하는아핀암호화/해킹코드예제
■무차별대입법,빈도분석등의암호해킹기법

★이책의대상독자★
암호화,해킹또는암호에대해궁금한독자들을대상으로하는책이다.이책의암호(23장과24장에서다루는‘공개키암호’는제외)는이미수세기전에작성됐지만요즘에는그와같은암호를해킹할수있는연산능력을모든컴퓨터가보유하고있다.현대의조직이나개인은더이상그런암호를사용하지는않지만,이를학습해암호작성의기초를알수있고해커가암호의취약점을이용해복호화해내는원리를학습할수있다.
이책은프로그래밍을해본적이없는독자들을위한책으로,우선초보자를위한최고의언어중하나인파이썬언어로기본프로그래밍개념을학습한다.
★이책의구성★
초반에는기본적인파이썬과암호개념을소개한다.그다음부터는일반적인암호용프로그램을설명하고암호를해킹하는프로그램을설명하는내용이번갈아등장한다.각장은학습한내용을복습하는데도움이될만한연습문제를포함하고있다.

1장,‘종이암호화도구만들기’에서는컴퓨터가등장하기전에암호화를수행한방법을보여주는간단한종이도구를소개한다.
2장,‘대화형셸프로그래밍’에서는파이썬의대화형셸을사용해코드를한번에한행씩실행하는방법을설명한다.
3장,‘문자열과프로그램작성’에서는전체적인프로그램작성법과이책의모든프로그램에서사용한문자열데이터유형을다룬다.
4장,‘뒤집기암호’에서는첫번째암호를구현하기위한간단한프로그램작성법을다룬다.
5장,‘카이사르암호’에서는수천년전에최초로발명된기본암호를설명한다.
6장,‘무차별대입법으로카이사르암호해킹하기’에서는무차별대입해킹기법과암호화키없이메시지를해독하는방법을설명한다.
7장,‘전치암호’에서는전치암호화와그를통해메시지를암호화하는프로그램을다룬다.
8장,‘전치암호복호화’에서는전치암호화의남은부분즉,키로메시지를해독하는방법에대해설명한다.
9장,‘테스트프로그램작성법’에서는프로그램을테스트하는프로그래밍기법을소개한다.
10장,‘파일암호화및복호화’에서는하드드라이브에서파일을읽거나쓰는프로그램을작성하는방법을다룬다.
11장,‘영어문장감지프로그램’에서는프로그램을통해서영어문장을감지할수있는방법을소개한다.
12장,‘전치암호해킹’에서는이전장의개념을결합해전치암호를해킹해본다.
13장,‘아핀암호를구현하기위한모듈러연산모듈’에서는아핀(Affine)암호의수학적개념을설명한다.
14장,‘아핀암호프로그래밍’에서는아핀암호프로그램을작성하는방법을다룬다.
15장,‘아핀암호해킹’에서는아핀암호해킹프로그램을작성하는법을다룬다.
16장,‘단순치환암호프로그래밍’에서는간단한치환암호를이용한암호화프로그램작성방법을다룬다.
17장,‘단순치환암호해킹’에서는단순치환암호를해킹하는프로그램작성방법을다룬다.
18장,‘비즈네르암호프로그래밍’에서는좀더복잡한치환암호인비즈네르(Vigen?re)암호프로그램을다룬다.
19장,‘빈도분석’은영어단어의구조와그것을이용한비즈네르암호해킹을고찰해본다.
20장,‘비즈네르암호해킹’에서는비즈네르암호를해킹하는프로그램을다룬다.
21장,‘일회용암호’에서는일회용암호와해킹이수학적으로불가능한이유를설명한다.
22장,‘소수찾기및생성’에서는숫자가소수인지빠르게판단하는프로그램을작성하는방법을다룬다.
23장,‘공개키암호를위한키생성’에서는공개키암호화와공개및개인키를생성하는프로그램을작성하는방법을다룬다.
24장,‘공개키암호프로그래밍’에서는단순한노트북컴퓨터로는해킹할수없는공개키암호프로그램을작성하는방법을다룬다.
부록‘파이썬코드디버깅’에서는IDLE의디버거로프로그램의버그를찾고잡는방법을다룬다.

★옮긴이의말★
이책은꽤독특하다.암호해킹과파이썬코딩을모두맨땅에서시작한다.즉,암호학도파이썬코딩도모르는,심지어프로그래밍경험이거의없는사람도볼수있는책이라는뜻이다.그러나프로그래밍의기초에만머무르지만은않는다.책의후반에서는현대암호학의정수인공개키기반암호까지다룬다.암호학과파이썬을학습하는과정을지루하지도가파르지도않게구성한훌륭한안내서이다.
어떤프로그래밍언어를배우는가장좋은방법은특정분야의소프트웨어를직접개발해보는것이다.간단히‘HelloWorld’를찍는것,프로그래밍패턴을공부하는것을넘어서자신이직접쓰기위한소프트웨어를개발해보는것이언어를익히는지름길이다.
저자알스웨이가트의이력을보면그는훌륭한파이썬선생님인동시에훌륭한파이썬개발자다.파이썬을알파부터오메가까지점증적으로안내하기보다는소프트웨어개발의여정에따라요구되는언어의특징과기능을가르치는방식을선호한다.이책역시암호해킹이라는문제를해결해가는여정을통해파이썬을즐기고익힐수있도록구성하고있다.
파이썬은최근주목받는인공지능/빅데이터를중심으로사용자층이급성장하고있는언어다.또한웹애플리케이션을비롯해광범위한영역에서사용되고있다.파이썬자체로도많이쓰이고두개이상의언어를복합적으로사용하는폴리글랏개발에서도가장사용성이좋은언어다.또한파이썬은사용수준에맞게저마다의깊이가있는언어다.기본기능만으로도복잡한문제를해결하는개발자도있고,파이썬의숨겨진저수준기능부터복잡한프레임워크까지사용하는개발자도있다.객체지향으로개발하는개발자도있고절차적또는원시적인스크립트수준을선호하는개발자도있다.파이썬답게(pythonic)파이썬을사용하는개발자가있는반면익숙한C나JAVA방식으로개발하는개발자도있다.특이한것은개발철학이나방법론,파이썬에대한지식수준이서로달라도각자의방식으로프로페셔널이될수있다는것이다.나는이것이파이썬의가장큰매력이라고생각한다.
이책을마쳤을때얻게될파이썬지식은이제막기초를탈출한수준일것이다.그러나거의무엇이든만들수있는수준이기도하다.공개키암호를만들수있는것이다.https로시작하는웹페이지통신과공인인증서에서쓰는바로그기술이다.한편으로공개키암호를이해했다는것은현대암호학의많은부분을이해했다는뜻이기도하다.이책은파이썬에이미익숙한독자에게도유용하다.파이썬경험이있는독자는이책을통해빠른속도로암호학에대한지식을독파해낼수있다.
그럼즐거운여정이되기를!