Qualcuno mi può fornire il codice per cifrare/decifrare usando M2Crypto AES256 CBC utilizzando PythonM2Crypto Encrypt/Decrypt utilizzando AES256
risposta
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.
Tale nesso non è più valida. –
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()
.
+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. –
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.
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()
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
- 1. C# Esempio di crittografia AES256 utilizzando System.Security.Cryptography.Aes
- 2. AES256 su Java vs PHP
- 3. AES256 NSString di crittografia in iOS
- 4. Come ottenere Python m2Crypto per funzionare con virtualenv?
- 5. Problemi di installazione M2Crypto con pip su OS X/MacOS
- 6. https con ECDHE-ECDSA-AES256-GCM-SHA384 in windows 2012
- 7. Come utilizzare m2crypto per convalidare una catena di certificati X509 in un'impostazione non SSL
- 8. Modo affidabile per dire se la chiave errata viene utilizzata nella decrittografia aes256
- 9. Java: applicazione dei criteri di protezione lato client dall'applet per AES256
- 10. M2Crypto non si installa in venv, o swig non definisce __x86_64__ che rompe la compilazione con OpenSSL
- 11. Come aggiungere un riempimento ai dati per renderlo accettabile per l'algoritmo di crittografia AES256 nella libreria pycrypto
- 12. Impossibile installare un pacchetto Python
- 13. Android utilizzando viewPager vs utilizzando tabhost
- 14. Test unità SparseArray utilizzando JUnit (utilizzando JVM)
- 15. utilizzando ensureIndex nello schema mongodb utilizzando mangusta
- 16. Verifica firma con pyOpenSSL
- 17. utilizzando DirectoryWalker
- 18. utilizzando namespace
- 19. Utilizzando EclipseLink
- 20. utilizzando l'ottava
- 21. Decrittografia SJCL AES-128-CCM in Ruby
- 22. creare un dizionario utilizzando 2 elenchi utilizzando LINQ
- 23. SMTP tramite Exchange utilizzando l'autenticazione Windows integrata (NTLM) utilizzando Python
- 24. BPMF modificato in PyMC3 utilizzando priori `LKJCorr`: PositiveDefiniteError utilizzando` NUTS`
- 25. Utilizzando un puntatore dopo aver liberato utilizzando free() problemi
- 26. come ottenere percorso risorsa utilizzando sottopercorso Utilizzando NSBundle
- 27. Catturare video/immagine utilizzando la webcam dell'utente utilizzando GWT
- 28. utilizzando LINQ con join utilizzando due dove su due tavoli
- 29. Utilizzando $ o clausola pymongo
- 30. http_referer perso utilizzando https
Si può avere uno sguardo un [a questo post] [1]. [1]: http://stackoverflow.com/questions/5003626/problem-with-m2cryptos-aes – ohe