Различия
Здесь показаны различия между двумя версиями данной страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
|
authors_main:author_advanced:api_main [2021/10/21 07:37] phaust |
authors_main:author_advanced:api_main [2021/11/01 20:36] (текущий) admin [Расшифровка] |
||
|---|---|---|---|
| Строка 29: | Строка 29: | ||
| ==== Пример ==== | ==== Пример ==== | ||
| - | Например: ''!api:user_id,task_id!'' | + | Чтобы получить зашифрованную строку в игре: ''!api:user_id,task_id!'' |
| - | Сгенерирует зашифрованную строку ''0394334e96a2f0fa738470e9a9778c684ba214990d200eab'', которую можно расшифровать в <code> | + | Сгенерирует зашифрованную строку ''0394334e96a2f0fa738470e9a9778c684ba214990d200eab'', которую можно расшифровать на вашем сервере в |
| + | <code> | ||
| {'u': 162862, 'tid': 42719} | {'u': 162862, 'tid': 42719} | ||
| </code> | </code> | ||
| Строка 92: | Строка 93: | ||
| main() | main() | ||
| </code> | </code> | ||
| + | |||
| + | Пример расшифровки на Ruby: | ||
| + | <code Ruby> | ||
| + | require 'json' | ||
| + | require 'openssl' | ||
| + | |||
| + | module Blowfish | ||
| + | def self.decrypt(data, key) | ||
| + | crypto = OpenSSL::Cipher::Cipher.new('bf-ecb').send(:decrypt) | ||
| + | |||
| + | crypto.key_len = key.length | ||
| + | crypto.key = key | ||
| + | crypto.padding = 0 | ||
| + | |||
| + | crypto.update([data].pack("H*")) << crypto.final | ||
| + | end | ||
| + | end | ||
| + | |||
| + | def qeng_data_decrypt(data, key) | ||
| + | decrypted_text = Blowfish.decrypt(data, key) | ||
| + | |||
| + | JSON.parse(decrypted_text, symbolize_names: true) | ||
| + | end | ||
| + | |||
| + | # Usage example | ||
| + | # | ||
| + | data = '0394334e96a2f0fa738470e9a9778c684ba214990d200eab' | ||
| + | key = 'XgHxzCvUSXwPfR7wBvdY4xHC6tSFLewx' | ||
| + | |||
| + | qeng_data_decrypt(data, key) # => {:u=>162862, :tid=>42719} | ||
| + | </code> | ||
| + | |||