Python
-
[Python] AES CBC모드 암호화 및 복호화Python 2023. 10. 28. 19:59
AES CBC모드 암호화 및 복호화 코드를 남겨보려한다. 이번에 사용한 암호화는 AES128인데 128은 128bits를 나타내고 이는 16bytes이다. 그리고 CBC모드는 간단하게 설명하자면 IV(Initialization Vector)와 key를 이용하여 Block(1byte = 1block) 단위로 암호화 복호화를 진행한다고 생각하면된다. 자세한 사항은 다른 페이지에 나와있으니 보면 될 것 같다. 그래서 이번 AES128 CBC모드는 16개의 블럭을 하나의 단위로 보고 암호화를 진행하는데 이 때, 16바이트의 배수가 아닐경우가 발생한다. 그렇기때문에 Padding이라는 것을 해주는데 이는 5바이트의 string이라면 11바이트를 추가적으로 붙여주는 방식이다. 코드는 다음과같다. from crypt..
-
[Python] cryptography 라이브러리로 RSA encrypt와 sign하기Python 2023. 10. 25. 00:33
이번에는 이전 포스팅에서 로드했던 public key와 private key를 이용하여 encryption과 signature를 진행해보려한다. 코드는 먼저 public key를 이용하여 encryption부터 보여주면 from cryptography.hazmat.backends import default_backend from cryptography import x509 from cryptography.hazmat.primitives.asymmetric import padding with open(pubkey_path, 'rb') as content: public_key = (x509.load_pem_x509_certificate(content.read(), default_backend)).public..
-
[Python] cryptography 라이브러리로 RSA에 쓰일 .pem file 로드하기Python 2023. 10. 24. 23:43
이번에는 내가 .pem 파일을 통해 encryption과 decryption을 진행해야하는데 내가 로드한 코드가 맞는 코드인지좀 체크해야돼서 이렇게 작성을 진행한다. 그리고 보통 다른 포스팅은 Pycrypto 혹은 Pycryptodome인가? 그 라이브러리로 많이 진행을 하던데 나는 cryptography라는 라이브러리로 하는게 필요했다고 생각해서 이걸로 적어보려한다. 설치는 pip3 install cryptography 를 진행하면된다. -----BEGIN CERTIFICATE----- MIIDWjCCAkICFA5LS3zQkHbZX6fry6Rzd3Bkt12uMA0GCSqGSIb3DQEBCwUAMHEx CzAJBgNVBAYTAlVTMQswCQYDVQQIDAJDQTERMA8GA1UEBwwIQmVya2VsZ..
-
[Python] Pycrypto 'RSA.py' errorPython 2023. 10. 24. 17:05
코드내용은 정말 단순한데 해결방법은 꽤나 더 단순했다. 다만 어떻게 해야하나 고민하는시간이 더 길었을 뿐 내가 생겼던 오류는 이것이다. File "/opt/homebrew/lib/python3.11/site-packages/Crypto/PublicKey/RSA.py", line 585 except ValueError, IndexError: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ SyntaxError: multiple exception types must be parenthesized 해당 오류를 찾아보니 파이썬에서는 해당과 같은 에러는 (ValueError, IndexError): 와 같이 괄호를 표현하면된다고한다. 그렇게 괄호를 적용해보니 File "/opt/homebrew/lib/p..
-
DB 파일 생성(python)Python 2023. 7. 4. 12:23
python3으로 db파일 생성하는 코드를 한 번 남기려한다. 먼저 내가 원하는 db는 Group : Name이다.그리고 여러 db를 만들 예정이라 json파일을 다음과 같이 구성했다.{ "auth101": { "TeamA": "Alice,Bob,Charile,David,Elon,net1.downloader", "TeamB": "Bob,Charlie,Elon,Zoe", "TeamC": "Kong,Bob,Zoe,Shan" }, "auth102": { "TeamA": "Alice,Bob,Charile,David,Elon", "TeamB": "Bob,Charlie,Elon,Zoe", "TeamC": "Kong,Bob,Z..