python 에서 실 현 된 AES 양 방향 대칭 암호 화 복호화 와 용법 분석
고급 암호 화 표준(Advanced Encryption Standard,AES)은 암호학 에서 Rijndael 암호 화 법 이 라 고도 부 르 는데 미국 연방정부 가 사용 하 는 블록 암호 화 표준 이다.이 기준 은 기 존의 DES 를 대체 하 는 데 사용 되 었 으 며,이미 다방면으로 분석 되 어 전 세계 적 으로 널리 사용 되 고 있다.5 년 간 의 선별 절 차 를 거 쳐 고급 암호 화 기준 은 미국 국가 표준 기술 연구원(NIST)이 2001 년 11 월 26 일 FIPS PUB 197 에 발 표 했 고 2002 년 5 월 26 일 에 유효한 기준 이 되 었 다.2006 년 에 고급 암호 화 기준 은 대칭 키 암호 화 에서 가장 유행 하 는 알고리즘 중 하나 가 되 었 다.
AES 는 기본 알고리즘 일 뿐 AES 를 실현 하 는 데 몇 가지 모델 이 있다.그 중의 CBC 모드 는 안전성 때문에 TLS(https 의 암호 화 기준)와 IPSec(win 이 사용 하 는)를 기술 표준 으로 한다.쉽게 말 하면 CBC 는 암호 와 salt(교란 작용)를 사용 하여 고정 알고리즘(md5)에 따라 key 와 iv 를 생 성 한다.그 다음 에 key 와 iv(초기 벡터,첫 번 째 명문 암호 화)로 암호 화(명문)와 복호화(암호 화)를 합 니 다.
다음은 python 에서 실 현 된 AES 암호 화 복호화 인 스 턴 스 를 소개 합 니 다.여 기 는 CBC 모드 를 사용 하고 pycrypto 모듈 을 사 용 했 습 니 다.
설치:
pip install Crypto
pip install binascii
실현:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
#@author: rui.xu
# pycrypto
# :easy_install pycrypto
from Crypto.Cipher import AES
from binascii import b2a_hex, a2b_hex
class prpcrypt():
def __init__(self,key):
self.key = key
self.mode = AES.MODE_CBC
# , text 16 16 ,
# 16 16 , 16 。
def encrypt(self,text):
cryptor = AES.new(self.key,self.mode,b'0000000000000000')
# key 16(AES-128),
#24(AES-192), 32 (AES-256)Bytes
# AES-128
length = 16
count = len(text)
if count < length:
add = (length-count)
#\0 backspace
text = text + ('\0' * add)
elif count > length:
add = (length-(count % length))
text = text + ('\0' * add)
self.ciphertext = cryptor.encrypt(text)
# AES ascii ,
# 16
return b2a_hex(self.ciphertext)
# , strip()
def decrypt(self,text):
cryptor = AES.new(self.key,self.mode,b'0000000000000000')
plain_text = cryptor.decrypt(a2b_hex(text))
return plain_text.rstrip('\0')
if __name__ == '__main__':
pc = prpcrypt('keyskeyskeyskeys') #
import sys
e = pc.encrypt(sys.argv[1]) #
d = pc.decrypt(e) #
print " :",e
print " :",d
ValueError: IV must be 16 bytes long windows 에서 기본적으로 이 오 류 를 보고 합 니 다.
cryptor = AES.new(self.key,self.mode,b'0000000000000000')
예 를 들 어 뒤에 그 거 를 붙이면 OK.PS:암호 화 복호화 에 관심 이 있 는 친 구 는 본 사이트 의 온라인 도 구 를 참고 할 수 있 습 니 다.
MD5 온라인 암호 화 도구:
http://tools.jb51.net/password/CreateMD5Password
천둥,급행열차,회오리 URL 암호 화/복호화 도구:
http://tools.jb51.net/password/urlrethunder
온라인 해시/해시 알고리즘 암호 화 도구:
http://tools.jb51.net/password/hash_encrypt
온라인 MD5/hash/SHA-1/SHA-2/SHA-256/SHA-512/SHA-3/RIPEMD-160 암호 화 도구:
http://tools.jb51.net/password/hash_md5_sha
온라인 sha 1/sha 224/sha 256/sha 384/sha 512 암호 화 도구:
http://tools.jb51.net/password/sha_encode
파 이 썬 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있다.
본 논문 에서 말 한 것 이 여러분 의 Python 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.