pycrypto는 스트림 암호를 위해 ARC4(Alleged RC4) 알고리즘을 제공한다.


스트림 암호는 보통 8bit 단위로 암호화를 수행하므로 암호 블록 크기는 1byte이다.


운영 모드로는 EBC 모드만 사용 가능하므로 초기화 벡터는 필요 없다.


따라서 ARC4 암호는 암호키만 정의되면 1문자 이상의 임의의 메세지에 대해 암 복호화가 가능하다.


  1. from Crypto.Cipher import ARC4  
  2. from Crypto.Hash import SHA256 as SHA  
  3.   
  4. class myARC4():  
  5.     def __init__(self, keytext):  
  6.         self.key = keytext  
  7.   
  8.     def enc(self, plaintext):  
  9.         arc4 = ARC4.new(self.key)  
  10.         encmsg = arc4.encrypt(plaintext)  
  11.           
  12.         return encmsg  
  13.   
  14.     def dec(self, ciphertext):  
  15.         arc4 = ARC4.new(self.key)  
  16.         decmsg = arc4.decrypt(ciphertext)  
  17.   
  18.         return decmsg  
  19.   
  20. if __name__ == "__main__":  
  21.     keytext = 'iloveyou'  
  22.     msg = 'imhapppy'  
  23.   
  24.     myCipher = myARC4(keytext)  
  25.     ciphered = myCipher.enc(msg)  
  26.     deciphered = myCipher.dec(ciphered)  
  27.   
  28.     print "ORIGINAL   : \t%s" %msg  
  29.     print "CIPHERED   : \t%s" %ciphered  
  30.     print "DECIPHERED : \t%s" %deciphered  


[코드 1] ARC4 단문 메세지 암 복호화 코드 - arc4.py



설명


  1. class myARC4():  
  2.     def __init__(self, keytext):  
  3.         self.key = keytext  


myARC4라는 이름으로 클래스를 정의한다. keytext를 self.key에 변경 없이 그대로 할당한다.


나머지 부분은 이전에 사용했던 부분과 거의 동일하다. (3DES , AES 글 참고)

'Crypto > pycrypto' 카테고리의 다른 글

RSA 공개키 암호 구현 - pycrypto  (0) 2017.02.05
3DES, AES 파일 암호화, 복호화 - pycrypto  (0) 2017.02.04
2. AES - pycrypto  (0) 2017.02.02
1. 3DES - pycrypto  (0) 2017.02.02

+ Recent posts