Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import base64
- from Crypto.Cipher import AES
- import datetime
- import hashlib
- from urllib.parse import quote
- import base64
- from Crypto import Random
- import binascii
- from Crypto.Util import Counter
- def md5_base64(text):
- # функция для кодирования текста в md5 с последующим base64
- hash = hashlib.md5()
- hash.update(text.encode())
- dig = hash.hexdigest()
- b = base64.b64encode(bytes(dig, 'utf-8'))
- return b.decode("utf-8")
- def crypt_param(val, key):
- #Функция для шифрования параметров AES
- print(type(val), val) # Ключ=Значение из словаря тип строковый
- print(type(key), key) # Ключ тип строковый
- BLOCK_SIZE = 16
- print(BLOCK_SIZE - len(val.encode()) % BLOCK_SIZE)
- PADDING = chr(BLOCK_SIZE - len(val) % BLOCK_SIZE)
- pad = lambda s: s + (BLOCK_SIZE - len(s) % BLOCK_SIZE) * PADDING
- EncodeAES = lambda c, s: base64.b64encode(c.encrypt(pad(s.encode())))
- cipher = AES.new(key.encode("utf-8"), AES.MODE_ECB) # <----- Тут ошибка
- encoded = EncodeAES(cipher, val) # <----- И тут ошибка
- return encoded # Вернуть должен Зашифрованое значение приобразованное в base64
- ### ================ Начало тут ==========================
- API_KEY = "js4cucpn4kkc6jl1p95np054g2" # API ключ от сервиса
- #Создаем нужные ключи для шифрования
- md5_api_key = md5_base64(API_KEY) # < ---- шифрование api ключа
- order_date = (datetime.datetime.now() + datetime.timedelta(days=1)).strftime("%Y-%m-%dV%H:%M:%S")
- # order_date = '2014-06-28V13:39:49'
- crypt_key = md5_base64(md5_api_key + order_date)[:16] # Секретный ключ который мы получили в результате кодирования через md5 и преобразованное в base64
- params = {
- 'description': 'ORDER 65',
- 'amount': 23,
- 'currency': 'RUB',
- 'orderID': 65,
- 'cardHolderCity': '',
- 'cardHolderCountry': '',
- 'cardHolderPostal': '',
- 'cardHolderRegion': '',
- 'successUrl': 'http://example.com/',
- 'failUrl': 'http://example.com/'
- }
- params_crypted = []
- for k, v in enumerate(params):
- r = crypt_param('%s=%s' % (k, v), crypt_key)
- params_crypted.append(r)
- data = quote('&'.join(params_crypted)) # Помоему должно получиться что то на подобии зашифрованный_description&зашифрованный_amount&зашифрованный_currency и тд....
Add Comment
Please, Sign In to add comment