M2Crypto шифрует/дешифрует с использованием AES256

Может ли кто-нибудь предоставить мне код для шифрования/дешифрования с использованием m2crypto aes256 CBC с использованием Python


person Community    schedule 12.05.2009    source источник
comment
Вы можете посмотреть [в этом посте] [1]. [1]: stackoverflow.com/questions/5003626/problem-with- m2cryptos-aes   -  person ohe    schedule 30.07.2011


Ответы (4)


Документация M2Crypto ужасна. Иногда может помочь документация OpenSSL (m2crypto обертывает OpenSSL). Лучше всего посмотреть модульные тесты M2Crypto -- https://gitlab.com/m2crypto/m2crypto/blob/master/tests/test_evp.py — найдите метод test_AES().

person joeforker    schedule 12.05.2009
comment
+1 ... Джо, этот ответ был очень ценен сегодня, когда я работал над домашним проектом. Я начал думать, что сошел с ума, когда смотрел документацию M2Crypto и, гм, скудно прокомментированный API-интерфейс epydoc; конечно, я пропустил что-то очевидное! Спасибо за восстановление моей веры. - person Jarret Hardie; 24.05.2009

Взгляните на m2secret:

Небольшая утилита и модуль для шифрования и дешифрования данных с использованием алгоритмов с симметричным ключом. По умолчанию используется 256-битный AES (Rijndael) с использованием CBC, но некоторые параметры можно настроить. Алгоритм PBKDF2, используемый для получения ключа из пароля.

person RSabet    schedule 12.05.2009

Я использую следующую обертку вокруг M2Crypto (позаимствовано из 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
person sirex    schedule 21.06.2016

Когда дело доходит до безопасности, ничто не сравнится с чтением документации.

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

Даже если бы я потратил время на то, чтобы понять и сделать идеальный код, который вы могли бы скопировать и вставить, вы бы не поняли, хорошо я поработал или нет. Не очень полезно, я знаю, но я желаю вам удачи и безопасных данных.

person trydyingtolive    schedule 12.05.2009
comment
Эта ссылка больше недействительна. - person Daryl Spitzer; 22.08.2010