Mochinov

Untitled

Feb 11th, 2021 (edited)
318
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.65 KB | None | 0 0
  1.  
  2. import base64
  3. from Crypto.Cipher import AES
  4. import datetime
  5. import hashlib
  6. from urllib.parse import quote
  7. import base64
  8. from Crypto import Random
  9. import binascii
  10. from Crypto.Util import Counter
  11.  
  12.  
  13. def md5_base64(text):
  14.     # функция для кодирования текста в md5 с последующим base64
  15.     hash = hashlib.md5()    
  16.     hash.update(text.encode())
  17.     dig = hash.hexdigest()
  18.     b = base64.b64encode(bytes(dig, 'utf-8'))
  19.     return b.decode("utf-8")
  20.  
  21. def crypt_param(val, key):
  22.     #Функция для шифрования параметров AES
  23.     print(type(val), val) # Ключ=Значение из словаря тип строковый
  24.     print(type(key), key) # Ключ  тип строковый
  25.  
  26.     BLOCK_SIZE = 16
  27.     print(BLOCK_SIZE - len(val.encode()) % BLOCK_SIZE)
  28.  
  29.     PADDING = chr(BLOCK_SIZE - len(val) % BLOCK_SIZE)
  30.  
  31.     pad = lambda s: s + (BLOCK_SIZE - len(s) % BLOCK_SIZE) * PADDING
  32.     EncodeAES = lambda c, s: base64.b64encode(c.encrypt(pad(s.encode())))
  33.  
  34.     cipher = AES.new(key.encode("utf-8"), AES.MODE_ECB) # <----- Тут ошибка
  35.     encoded = EncodeAES(cipher, val) # <----- И тут ошибка
  36.  
  37.     return encoded # Вернуть должен Зашифрованое значение приобразованное в base64
  38.  
  39. ### ================ Начало тут ==========================
  40. API_KEY = "js4cucpn4kkc6jl1p95np054g2" # API ключ от сервиса
  41.  
  42. #Создаем нужные ключи для шифрования
  43. md5_api_key = md5_base64(API_KEY) # < ---- шифрование api ключа
  44. order_date = (datetime.datetime.now() + datetime.timedelta(days=1)).strftime("%Y-%m-%dV%H:%M:%S")
  45. # order_date = '2014-06-28V13:39:49'
  46. crypt_key = md5_base64(md5_api_key + order_date)[:16]  # Секретный ключ который мы получили в результате кодирования через md5 и преобразованное в base64
  47.  
  48. params = {
  49.     'description': 'ORDER 65',
  50.     'amount': 23,
  51.     'currency': 'RUB',
  52.     'orderID': 65,
  53.     'cardHolderCity': '',
  54.     'cardHolderCountry': '',
  55.     'cardHolderPostal': '',
  56.     'cardHolderRegion': '',
  57.     'successUrl': 'http://example.com/',
  58.     'failUrl': 'http://example.com/'
  59. }
  60. params_crypted = []
  61. for k, v in enumerate(params):
  62.     r = crypt_param('%s=%s' % (k, v), crypt_key)
  63.     params_crypted.append(r)
  64. data = quote('&'.join(params_crypted)) # Помоему должно получиться что то на подобии зашифрованный_description&зашифрованный_amount&зашифрованный_currency и тд....
  65.  
  66.  
Add Comment
Please, Sign In to add comment