Czy ktoś może podać mi kod do szyfrowania/deszyfrowania przy użyciu M2Crypto AES256 CBC użyciu PythonaM2Crypto szyfrowania/odszyfrowywania przy użyciu AES256
Odpowiedz
Jeśli chodzi o bezpieczeństwo nic nie przebije czytanie dokumentacji.
http://chandlerproject.org/bin/view/Projects/MeTooCrypto
Nawet gdybym wziął czas, aby zrozumieć i zrobić idealne kod do kopiowania i wklejania, że nie masz pojęcia, czy mam dobrą robotę, czy nie. Niezbyt pomocna, wiem, ale życzę ci szczęścia i bezpiecznych danych.
Ten link nie jest już ważna. –
Dokumentacja M2Crypto jest okropna. Czasem może pomóc dokumentacja OpenSSL (m2crypto opakowuje OpenSSL). Najlepiej jest spojrzeć na testy jednostki M2Crypto - http://svn.osafoundation.org/m2crypto/trunk/tests/test_evp.py - poszukaj metody test_AES()
.
+1 ... joe, ta odpowiedź została doceniona dzisiaj, gdy pracowałem nad projektem dla zwierząt domowych. Zaczynałem myśleć, że byłem szalony, patrząc na dokumenty M2Crypto i, um, rzadko komentowane API epydoc; na pewno brakowało mi czegoś oczywistego! Dziękuję za przywrócenie mojej wiary. –
Spójrz na m2secret:
małe narzędzie i moduł dla szyfrowania i deszyfrowania danych przy użyciu symetryczny klucz algorytmów. Domyślnie używa 256-bitowego AES (Rijndael) przy użyciu CBC, , ale niektóre opcje można konfigurować. Algorytm PBKDF2 użyty do wyprowadzenia klucza z hasła.
def encrypt_file(key, in_filename, out_filename,iv):
cipher=M2Crypto.EVP.Cipher('aes_256_cfb',key,iv, op=1)
with open(in_filename, 'rb') as infile:
with open(out_filename, 'wb') as outfile:
outfile.write(b)
while True:
buf = infile.read(1024)
if not buf:
break
outfile.write(cipher.update(buf))
outfile.write(cipher.final())
outfile.close()
infile.close()
def decrypt_file(key, in_filename, out_filename,iv):
cipher = M2Crypto.EVP.Cipher("aes_256_cfb",key , iv, op = 0)
with open(in_filename, 'rb') as infile:
with open(out_filename, 'wb') as outfile:
while True:
buf = infile.read(1024)
if not buf:
break
try:
outfile.write(cipher.update(buf))
except:
print "here"
outfile.write(cipher.final())
outfile.close()
infile.close()
używam następujący otoki wokół M2Crypto (pożyczoną od cryptography.io):
import os
import base64
import M2Crypto
class SymmetricEncryption(object):
@staticmethod
def generate_key():
return base64.b64encode(os.urandom(48))
def __init__(self, key):
key = base64.b64decode(key)
self.iv = key[:16]
self.key = key[16:]
def encrypt(self, plaintext):
ENCRYPT = 1
cipher = M2Crypto.EVP.Cipher(alg='aes_256_cbc', key=self.key, iv=self.iv, op=ENCRYPT)
ciphertext = cipher.update(plaintext) + cipher.final()
return base64.b64encode(ciphertext)
def decrypt(self, cyphertext):
DECRYPT = 0
cipher = M2Crypto.EVP.Cipher(alg='aes_256_cbc', key=self.key, iv=self.iv, op=DECRYPT)
plaintext = cipher.update(base64.b64decode(cyphertext)) + cipher.final()
return plaintext
może masz wyglądać [w tym poście] [1]. [1]: http://stackoverflow.com/questions/5003626/problem-with-m2cryptos-aes – ohe