python의 aes 암호화 코드 공유

2279 단어 pythonaes암호화
고급 암호화 표준(영어: Advanced Encryption Standard, 줄임말: AES)은 암호학에서 Rijndael 암호화법이라고도 하는데 미국 연방정부가 채택한 블록 암호화 표준이다.이 표준은 원래의 DES를 대체하는 데 사용되며 이미 다방면으로 분석되고 전 세계에서 널리 사용되고 있다.5년간의 선별 절차를 거쳐 고급 암호화 표준은 미국 국가표준과 기술연구원(NIST)이 2001년 11월 26일 FIPS PUB 197에 발표했고 2002년 5월 26일에 유효한 표준이 되었다.2006년에 고급 암호화 표준은 이미 대칭 키 암호화에서 가장 유행하는 알고리즘 중의 하나가 되었다.백과
학부 때 DES 암호화 알고리즘을 만들어서 컴퓨터 파일을 암호화했는데 DES 암호화 알고리즘은 현재 기본적으로 폐기된 상태이기 때문에 지금은 좀 더 고급스럽게 해 보려고 합니다.
DES 암호화 알고리즘은 3DES 암호화 알고리즘으로 발전할 수 있는데 나중에 AES 암호화 알고리즘으로 업그레이드되어 키의 길이를 늘렸고 폭력적인 해독의 어려움을 증가시켰다.
이번에 Python을 사용하여 AES 암호화 복호화 수행

import hashlib
from Crypto.Cipher import AES
import base64

class prpcrypt():
 def __init__(self,key):
  self.key = key #  python3 AES ,  bytearray ,  encode (linux )
  IV = 16 * '\x00'
  self.iv=IV.encode("utf-8")
  self.mode = AES.MODE_CBC
  self.BS = AES.block_size
  self.pad = lambda s: s + (self.BS - len(s) % self.BS) * chr(self.BS - len(s) % self.BS)
  self.unpad = lambda s: s[0:-ord(s[-1])]

 #  
 def encrypt(self, text):
  text = self.pad(text).encode("utf-8")
  cryptor = AES.new(self.key, self.mode, self.iv)
  #  AES-128  (CBC )
  ciphertext = cryptor.encrypt(text)
  # base64 
  return base64.b64encode(bytes(ciphertext))

 #  
 def decrypt(self, text):
  # base64 
  text = base64.b64decode(text)
  cryptor = AES.new(self.key, self.mode, self.iv)
  # CBC 
  plain_text = cryptor.decrypt(text)
  #  strip()  
  return self.unpad(bytes.decode(plain_text).rstrip('\0')) #  ???


def gen_binsha(data):
 shavalue = hashlib.sha256()
 shavalue.update(data)
 return shavalue.digest()

if __name__ == '__main__':
 key='78f40cecf89'
 key=gen_binsha(key.encode('utf-8'))
 pc = prpcrypt(key=key) #     iv

 text='qwerqwerkkk12345'
 e = pc.encrypt(text) #  
 d = pc.decrypt(e) #  
 print(" :%s" % e)
 print(" :%s"% d)
 print(" :%s"% len(d))
이상은python의 aes 암호화 코드에 대한 상세한 내용을 공유하는 것입니다.python의 aes 암호화 코드에 대한 더 많은 자료는 저희 다른 관련 글을 주목해 주십시오!

좋은 웹페이지 즐겨찾기