@rustem_ck

Почему в Android Java и PHP HMAC SHA 256 разные результаты?

Не могу понять, почему:

Android Java:
private hash_hmac(String str, String secret){
    Mac sha256_HMAC = Mac.getInstance("HmacSHA256");
    SecretKeySpec secretKey = new SecretKeySpec(secret.getBytes("UTF-8"), "HmacSHA256");
    sha256_HMAC.init(secretKey);
    String hash1 = Base64.encodeToString(sha256_HMAC.doFinal(str.getBytes("UTF-8")), 0);
        return hash1;
    }


Переменные:
str = "eyJoYXNoIjoic29tZVJlcUhhc2hTdHIiLCJhbnN3ZXIiOnRydWV9"
    secret = "AusVwlqhJY4YvuCIdotMpduVWWQdiVnl"


Результат:

UuJhaD7sjLXUPN01JJWEcObIwDdLXHturBdSZFxKPxI=

и в PHP:
$str=base64_encode('eyJoYXNoIjoic29tZVJlcUhhc2hTdHIiLCJhbnN3ZXIiOnRydWV9');
    $key='AusVwlqhJY4YvuCIdotMpduVWWQdiVnl';
    print(base64_encode(hash_hmac('sha256', $str, $key,true)));


Результат:

AWFG4WXHtOToeN8d4J4Lt67u8VVa35AxBfIEsg31DhU=

Разные результаты. Не могу понять, почему. При этом в desktop JAVA совпадает с PHP, а в Android - нет.
  • Вопрос задан
  • 665 просмотров
Решения вопроса 1
neuotq
@neuotq
full stack php, стартапы, прокрастинация
Если верить Стэковерфлоу, разница в обработчике строк на Андроиде в Джаве есть, чтобы работала так же как на декстопе нужно добавить ключ Base64.NO_WRAP
Base64.encode("foobar".getBytes(), Base64.NO_WRAP);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
МойСклад Москва
от 140 000 до 200 000 руб.
от 70 000 до 130 000 руб.
ГРАН Software Москва
от 70 000 руб.
16 июл. 2019, в 23:23
5000 руб./за проект
16 июл. 2019, в 22:43
10000 руб./за проект