Правильно выполнить миграцию из библиотеки Python 2 md5 в hashlib Python 3 в веб-приложении Flask для интеграции с CCAvenue - PullRequest
0 голосов
/ 14 декабря 2018

Я пытаюсь интегрировать сторонний платежный шлюз ( CCAvenue ) во Flask 0.12.2, Python 3.6.1.

В ссылочном коде, предоставленном сторонней организацией, используетсяустаревшая библиотека md5 для шифрования текстов.

У меня есть решение для миграции в Существующее решение в Django .Однако мне нужен код версии Flask для того же.

1 Ответ

0 голосов
/ 15 декабря 2018

У меня есть решение, и вот код

from Crypto.Cipher import AES
import hashlib
from binascii import hexlify, unhexlify

def pad(data):
    length = 16 - (len(data) % 16)
    data += chr(length)*length
    return data

def unpad(data):
    return data[0:-ord(data[-1])] 

def encrypt(plainText, workingKey):
    iv = '\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f'
    plainText = pad(plainText)
    bytearrayWorkingKey = bytearray()
    bytearrayWorkingKey.extend(map(ord, workingKey))
    enc_cipher = AES.new(hashlib.md5(bytearrayWorkingKey).digest(), AES.MODE_CBC, iv)
    return hexlify(enc_cipher.encrypt(plainText)).decode('utf-8')

def decrypt(cipherText, workingKey):
    iv = '\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f'
    encryptedText = unhexlify(cipherText)
    bytearrayWorkingKey = bytearray()
    bytearrayWorkingKey.extend(map(ord, workingKey))
    decCipher = AES.new(hashlib.md5(bytearrayWorkingKey).digest(), AES.MODE_CBC, iv)
    return unpad(decCipher.decrypt(encryptedText).decode('utf-8'))
...