본문 바로가기

전체 글

(176)
pyqt를 이용한 QTreeWidget 이용 및 리스트 간 항목 이동 구현하기 GUI 공부를 위해서 pyqt를 사용하고 있는데, top-down 방식으로 공부하려니 여간 쉽지가 않다. 구성이 모든 class로 이뤄져있고, 객체간의 관계가 복잡해서 document를 정독하고 나서야 겨우 구현에 성공했다. 소스 코드는 다음과 같다. import sys from PyQt5.QtWidgets import QApplication, QWidget,QDesktopWidget,QPushButton, QBoxLayout,QTreeWidget,QTreeWidgetItem __auther__='d0rk' class my_app(QWidget): def __init__(self): super().__init__() self.add_btn=QPushButton('추가') self.del_btn=QPush..
IPsec (IP security) 1994년 IAB(Internet Architecture Board)에서 "Security in the Internet Architecture"라는 이름으로 제안되었고 RFC 1636에 설명되어있다. IPsec의 이점은 다음과 같다. IPsec은 방화벽이나 라우터에서 구현이되어 있기때문에, 모든 traffic에 대한 보안이 적용된다. 따라서 end-user는 어떤 overhead도 발생하지 않는다. 방화벽에서 작동하는 IPsec은 만약 외부로부터 오는 모든 트래픽이 IP를 사용해야 하거나, 방화벽이 인터넷에서 조직으로 들어오는 유일한 수단인 경우 방화벽을 bypass 할 수 없다(즉. 모든 트래픽이 IP를 사용하고, in-bound에 방화벽이 설치되어있다면, 무조건 방화벽을 거쳐서 통과해야한다). IPs..
S/MIME (Secure/Multipurpose Internet Mail Extension) - 3 S/MIME (Secure/Multipurpose Internet Mail Extension) - 1 에서는 S/MIME을 알기에 앞서 MIME에 대해 알아보았고, S/MIME (Secure/Multipurpose Internet Mail Extension) - 2 에서 기본적인 S/MIME에 대해서 알아보았다. #DKIM(Domainkeys Identified Mail) DKIM는 e-mail messages를 서명하기 위한 기술이다. 메세지 수신자는 signer의 domain에 직접 query를 날려 public-key를 가져옴으로써, 메세지가 signing domain의 private-key로 sign되었는지를 확인하여 서명을 확인할 수 있다. 즉, 메일이 오면 메세지에 적혀있는 도메인으로 quer..
S/MIME (Secure/Multipurpose Internet Mail Extension) - 2 S/MIME (Secure/Multipurpose Internet Mail Extension) - 1 에서는 S/MINE을 시작하기에 앞서 MINE은 어떻게 구성되어 있는지 알아보고, 마지막에 S/MINE이 어떤 것인지 알아봤다. 이제 본격적으로 S/MINE에 대해 알아보자! S/MINE은 Secure + MIME으로, MINE에 Signature, Encryption이 고려된 것을 말한다. S/MIME는 PKCS를 통해 Algorithm indentifier 이나 certificate 등을 처리한다. PKCS는 Message content를 통해 처리되며, MIME 형식으로 header를 통해 제공된다. PGP에서 다뤘듯, Content Type은 중요하다! 대부분의 서비스가 Content Type을 ..
S/MIME (Secure/Multipurpose Internet Mail Extension) - 1 S/MIME은 RSA Data Security의 기술을 이용해 MIME의 Internet e-mail format stanard의 보안을 증가시키기 위해 고안되었다. S/MIME은 RFCs 3370, 3850, 3851, 3852에 정의되어 있다. S/MINE을 이해하기 위해서는 MIME이라고 불리는 e-mail format에 대한 이해가 필요하다. MIME을 이해하기 위해서는 아직도 종종 사용되는 RFC 822부터 살펴볼 필요가 있다. RFC 5322는 가장 최신 버전의 Internet Message Format에 대해 설명하고 있다. # RFC 5322 RFC 5322는 e-mail의 text message 에 대한 format을 정의하고 있다. 여기서 Message는 envelope와 content..
PGP (Pretty Good Privacy) Phill Zimmermann에 의해 만들어진 서비스 공개키로는 RSA, DSS, Diffie-Hellman이 사용되며, 대칭키로는 CAST-128, IDEA, 3DES가 사용됨. 해쉬로는 SHA-1이 사용된다. Windows, UNIX, Macintosh 및 많은 운영체제에서 사용 가능하다. PGP는 4개의 서비스(Authentication, Confidentially, Compression, e-mail compatibility)를 제공한다. 위의 4개의 서비스를 간단하게 다음과 같이 요약할 수 있다. Function Algorithms Used Descrption Digital signature DSS/SHA or RSA/SHA SHA-1을 이용해 해쉬코드가 만들어지며, 이 해쉬는 Sender의 P..
Python에서 db 연동하기(mysql, mariadb) 예전에 파이썬에서 db를 사용할 일이있어서 코딩했다가, 오랜만에 다시 사용할일이 생겨 찾아봤다. 또 까먹을 것 같아 정리차 남겨둔다. Python에서 database를 사용할 수 있는 방법은 여러가지가 있지만, 그 중에서 나는 mysql이나 mariadb를 사용하므로 이것들과 연동이 되는 라이브러리를 찾아보았다. 그래서 나는 pymysql을 이용할 것이다! 코드는 다음과 같다 import pymysql # dbconfig.py class MysqlController: def __init__(self, host, id, pw, db_name): self.conn = pymysql.connect(host=host, user= id, password=pw, db=db_name,charset='utf8') se..
Combination 과 nCr+1 구하기! $$_{n}C_{r}$$ n개중에 r개를 선택할 경우의 수 $$_{n}C_{r+1} = _{n-1}C_{r-1} + _{n}C_{r-1}$$ 또는, $$_{n}C_{r+1} = (n-r)/(r+1) * _{n}C_{r}$$ 위와 같이 계산할 수 있음. 아래는 실제 테스트한 코드. n = 33 r = 24 print(ncr(33,24)) print(ncr(33,25)) print((n-r)/(r+1) * ncr(33,24)) exit(0) result : 385671001388415613884156.0 물론 사용시에는 ncr이전 값을 다른 공간에 저장하고 사용하는 것이 속도를 올릴 수 있을 것 같다!Thanks to rach