Как отправить временную метку и хэш md5 для запроса Marvel Api

#android #kotlin #retrofit #md5

#Android #kotlin #модернизация #md5

Вопрос:

Я пытаюсь выполнить вызов Marvel Api, однако получаемый мной результат — code = 401 Unauthorized, это связано с невозможностью правильной отправки параметров временной метки и хэша.

база URL-этоhttp://gateway.marvel.com/v1/public / -> мой URL-адрес: = http: //gateway.marvel.com / v1 / общедоступные / символы? имя = Росомаха amp; apikey = XXX amp; ts = 2019-04-06% 2013: 09: 10.272 amp; хэш = [B @ afad7ce8] В документации описано, что мне нужно отправить эти параметры: Params: { «apikey»: «ваш ключ api», «ts»: «временная метка», «hash»: «ваш хэш» } Мне нужна помощь, чтобы правильно сгенерировать ts и хэш. Примечание: хэш = ts apiKey publicKey

 var ts = Timestamp(System.currentTimeMillis())
var hash = getHash(ts.toString())

fun getHash(ts: String): ByteArray? {
        val byte = ts.toByteArray()   API_KEY.toByteArray()   PUBLIC_KEY.toByteArray()
        val md = MessageDigest.getInstance("MD5")

        return md.digest(byte)
    }
  

Ответ №1:

Вы не должны помещать свой закрытый ключ в код (это плохая практика, и обычно с этим ключом вы можете выполнять операции CRUD с API и даже удалять некоторые части базы данных).

Получите свой открытый ключ Marvel (например, 1234), свой закрытый ключ (например, abcd) и выберите временную метку (например, 1564731162583).

Перейдите на веб-сайтhttps://passwordsgenerator.net/md5-hash-generator поместите свои строки, подобные 1564731162583abcd1234 (временная метка закрытый ключ ключ API без пробелов). Вы получите (с параметрами из примера) хэш: B5936DEBCC1A252C679D2D3E5361B6C0

Еще одна важная вещь: когда вы добавляете этот хэш в свой вызов API, временная метка должна быть такой же, как в хэше (ранее выбранный пример 1564731162583), а также хэш MD5 должен быть в нижнем регистре. Это важно.

Надеюсь, это поможет 🙂