2009-05-12 16 views
6

Qualcuno mi può fornire il codice per cifrare/decifrare usando M2Crypto AES256 CBC utilizzando PythonM2Crypto Encrypt/Decrypt utilizzando AES256

+0

Si può avere uno sguardo un [a questo post] [1]. [1]: http://stackoverflow.com/questions/5003626/problem-with-m2cryptos-aes – ohe

risposta

-1

Quando si tratta di sicurezza niente batte la lettura della documentazione.

http://chandlerproject.org/bin/view/Projects/MeTooCrypto

Anche se ho preso il tempo di capire e rendere il codice perfetto per voi di copiare e incollare, si avrebbe la minima idea se ho fatto un buon lavoro o no. Non molto utile, lo so, ma ti auguro buona fortuna e dati sicuri.

+0

Tale nesso non è più valida. –

13

La documentazione di M2Crypto è terribile. A volte può essere d'aiuto la documentazione di OpenSSL (m2crypto wraps OpenSSL). La soluzione migliore è guardare i test dell'unità M2Crypto - http://svn.osafoundation.org/m2crypto/trunk/tests/test_evp.py - cercare il metodo test_AES().

+0

+1 ... joe, questa risposta è stata molto apprezzata oggi mentre stavo lavorando a un progetto per animali domestici. Stavo cominciando a pensare che ero pazzo quando guardavo i documenti di M2Crypto e, um, commentavo scarsamente API epydoc; sicuramente, mi mancava qualcosa di ovvio! Grazie per aver ripristinato la mia fede. –

2

Date un'occhiata a m2secret:

Piccolo programma di utilità e il modulo per crittografia e decrittografia dei dati utilizzando algoritmi a chiave simmetrica. Per impostazione predefinita, utilizza AES (Rijndael) a 256 bit utilizzando CBC, ma alcune opzioni sono configurabili. Algoritmo PBKDF2 utilizzato per derivare la chiave dalla password.

1
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() 
1

Io uso seguente wrapper M2Crypto (preso in prestito da 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 
Problemi correlati