Alguien me puede proporcionar el código para cifrar/descifrar usando M2Crypto AES256 CBC usando PythonM2Crypto cifrar/descifrar usando AES256
Respuesta
Cuando se trata de seguridad nada late leer la documentación.
http://chandlerproject.org/bin/view/Projects/MeTooCrypto
Incluso si tomaba el tiempo para comprender y hacer que el código perfecto para copiar y pegar, que tendrían ni idea de si lo hiciera un buen trabajo o no. No es muy útil, lo sé, pero le deseo suerte y datos seguros.
Ese vínculo ya no es válida. –
La documentación de M2Crypto es terrible. En ocasiones, la documentación de OpenSSL (m2crypto wraps OpenSSL) puede ayudar. Su mejor opción es mirar las pruebas de la unidad M2Crypto - http://svn.osafoundation.org/m2crypto/trunk/tests/test_evp.py - busque el método test_AES()
.
+1 ... joe, esta respuesta fue muy apreciada hoy en día mientras trabajaba en un proyecto de mascotas. Estaba empezando a pensar que estaba loco cuando miraba los documentos de M2Crypto y, um, la API epydoc escasamente comentada; seguramente, me faltaba algo obvio! Gracias por restaurar mi fe –
Tome un vistazo a m2secret:
Pequeña utilidad y el módulo de cifrar y descifrar datos utilizando algoritmos de clave simétrica. De forma predeterminada, usa AES de 256 bits (Rijndael) usando CBC, pero algunas opciones son configurables. Algoritmo PBKDF2 utilizado para derivar la clave de la contraseñ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()
utilizo siguiente envoltura alrededor M2Crypto (tomado de 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# Ejemplo de encriptación AES256 usando System.Security.Cryptography.Aes
- 2. Instalación M2Crypto en CentOS
- 3. ¿Cómo instalo M2Crypto en Ubuntu?
- 4. Cifrado NSString AES256 en iOS
- 5. Cifrados EXP (ORT) y M2Crypto/OpenSSL
- 6. ¿Cómo hacer que Python m2Crypto trabaje con virtualenv?
- 7. Conformidad con la exportación y AES256 en iPhone
- 8. ¿Cómo se utiliza M2Crypto para validar una cadena de certificados X509 en un entorno
- 9. ¿Puedo usar PBKDF2 para generar una clave AES256 para encriptar y autenticar implícitamente?
- 10. Cómo agregar un relleno a los datos para hacerlo aceptable para el algoritmo de cifrado AES256 en la biblioteca pycrypto
- 11. No se puede instalar un paquete Python
- 12. ImportError usando nose, no ImportError usando rawtesttest?
- 13. Analizando CSV usando OleDb usando C#
- 14. Usando nombres para discriminar instancias usando IoC
- 15. usando DirectoryWalker
- 16. Usando TabWidget.setDividerDrawable()?
- 17. Usando OpenXmlReader
- 18. Usando GetKeyState()
- 19. Usando PropertyInfo.GetValue()
- 20. Usando django.db.connection.queries
- 21. Usando RAMDirectory
- 22. Usando scala.util.control.Exception
- 23. usando mysql_close()
- 24. Usando System.Random
- 25. Usando ResourceManager
- 26. usando javascript
- 27. cadena usando "*"
- 28. Usando IIterable
- 29. ¿Cómo actualizo un paquete de Python?
- 30. Captura de micrófonos usando Html 5 y difusión usando socket.io
Puede echar un vistazo a [en este mensaje] [1]. [1]: http://stackoverflow.com/questions/5003626/problem-with-m2cryptos-aes – ohe