Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
authors_main:author_advanced:api_main [2021/10/21 06:24] phaust |
authors_main:author_advanced:api_main [2021/11/01 20:36] (текущий) admin [Расшифровка] |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | {{indexmenu_n>2}} | + | {{indexmenu_n>30}} |
====== Зашифрованная информация об игре ====== | ====== Зашифрованная информация об игре ====== | ||
Строка 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> | ||
+ |