Python to C # AES CBC PKCS7

Я пытаюсь преобразовать этот код C # в Python (2.5, GAE). Проблема в том, что зашифрованная строка из сценария Python отличается каждый раз при запуске шифрования (в той же строке).

string Encrypt(string textToEncrypt, string passphrase)
 {
    RijndaelManaged rijndaelCipher = new RijndaelManaged();
    rijndaelCipher.Mode = CipherMode.CBC;
    rijndaelCipher.Padding = PaddingMode.PKCS7;

    rijndaelCipher.KeySize = 128;
    rijndaelCipher.BlockSize = 128;
    byte[] pwdBytes = Encoding.UTF8.GetBytes(passphrase);
    byte[] keyBytes = new byte[16];
    int len = pwdBytes.Length;
    if (len > keyBytes.Length)
    {
        len = keyBytes.Length;
    }
    Array.Copy(pwdBytes, keyBytes, len);
    rijndaelCipher.Key = keyBytes;
    rijndaelCipher.IV = new byte[16];
    ICryptoTransform transform = rijndaelCipher.CreateEncryptor();
    byte[] plainText = Encoding.UTF8.GetBytes(textToEncrypt);
    return Convert.ToBase64String(transform.TransformFinalBlock(plainText, 0, plainText.Length));
}

Код Python: (PKCS7Encoder: http://japrogbits.blogspot.com/2011/ 02 / using-encrypted-data-between-python-and.html )

from Crypto.Cipher import AES
from pkcs7 import PKCS7Encoder
#declared outside of all functions
key = '####'
mode = AES.MODE_CBC
iv = '\x00' * 16
encryptor = AES.new(key, mode, iv)
encoder = PKCS7Encoder()

def function(self):
 text = self.request.get('passwordTextBox')
 pad_text = encoder.encode(text)
 cipher = encryptor.encrypt(pad_text)
 enc_cipher = base64.b64encode(cipher)

Код C # наследуется. Код Python должен быть зашифрован и расшифрован таким же образом, чтобы код C # мог правильно декодировать значение.

Примечание: я новичок в python :)

Изменить: извините. должен был заметить, что вызывается функция.

Спасибо!

8
задан Eonasdan 21 July 2011 в 12:12
поделиться