일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 앱
- Dialog
- TEST
- Flutter
- intent
- textfield
- 계측
- textview
- livedata
- 앱바
- data
- tabbar
- activity
- drift
- Compose
- LifeCycle
- Kotlin
- DART
- 테스트
- viewmodel
- scroll
- 안드로이드
- ScrollView
- android
- CustomScrollView
- binding
- appbar
- Button
- Coroutines
- Navigation
- Today
- Total
Study Record
[암호] 파이썬 암호기술 기본 본문
1. Cryptodome/Cryptodomex Package
- https://pycryptodome.readthedocs.io/en/latest/src/introduction.html
- pycrypto 라이브러리를 개선하여 저수준 암호화 primitive로 구성된 독립적인 python 패키지이다.
- Python 2.6/2.7, Python 3.4 이상에서 지원한다.
설치 방법
(CMD)
# pip3 install pycryptodome
# pip3 install pycryptodomex
(PyCharm)
File > Settings > Project > Project Interpreter > '+' > 'pycryptodome' 검색 후 설치
2. 기본 사용
☞ byte 표현
date = b'Hello world'
→ 문자열을 byte 형태로 date 에 저장한다.
'Hello world'.encode('UTF-8')
→ 'UTF-8' 형식으로 인코딩(byte)한다.
즉, 파이썬은 기본 UTF-8 로 되어있기 때문에 b'Hello world' 와 'Hello world'.encode('UTF-8') 는 같은 의미이다.
open('filename.bin', 'wb')
→ 'wb' 에서 b의 의미는 byte 형태로 연다는 것이다.
☞ 아스키코드
ASCII 는 7비트 인코딩으로, 33개의 출력 불가능한 제어문자들과 공백을 비롯한 95개의 출력 가능한 문자(대문자, 소문자, 숫자, 특수문자, 공백)들로 이루어져있다.
ex) t => 01110100 : 0x74 = hex(ord('t'))
ord('A') : 문자 -> 십진수
chr(65) : 십진수 -> 문자
hex(65) : 숫자 -> 16진수
bin(30) : 숫자 -> 2진수
rjust(10) : 10칸을 잡고 오른쪽 정렬
ljust(13) : 13칸을 잡고 왼쪽 정렬
☞ xor 연산
xor 연산은 % 2 (mod 2) 연산과 같다.
"A xor B xor B = A" 성질을 이용하여 A는 문자열, B는 키값으로 암호화, 복호화에 사용된다.
a ^ b : a xor b
'암호' 카테고리의 다른 글
[암호] 공개키 암호 - 키 배송 문제 (0) | 2021.12.07 |
---|---|
[암호] 인코딩과 디코딩 (hURL CMD) (0) | 2021.12.07 |
[암호] AES 블록암호 모드 (0) | 2021.12.02 |
크랙 전사전파일 만들기 - crunch , CeWL , john CMD (0) | 2021.12.02 |
[암호] 대칭키 암호 - 스트림, 블록(DES/AES) (0) | 2021.12.02 |