io.jsonwebtoken.security.weakkeyexception: размер ключа проверки составляет 48 бит, что недостаточно для алгоритма HS256 - PullRequest
1 голос
/ 06 апреля 2019

Я пытаюсь взять токен из API моего веб-приложения и проанализировать идентификатор пользователя из него в Android Studio.Я использую jjwt для декодирования токена, но сталкиваюсь с этой проблемой.Я читал онлайн, и в решениях говорилось, что мой «секретный ключ» был в базе 64, но он все еще вызывает проблемы.

Я пытался использовать кодировщик, онлайн-кодировщик и жестко кодировать строку base-64 моего «секрета», но все равно возвращает те же проблемы.Ссылка на людей, имеющих подобные проблемы, находится здесь github.com/auth0/node-jsonwebtoken/issues/208

    final TextView tv = (TextView) findViewById(R.id.tvText);

    final String token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjVjOWYzYWI2NzY2Mjg2NDYyNDY0YTczNCIsIm5hbWUiOiJSYW5keSIsImF2YXRhciI6Ii8vd3d3LmdyYXZhdGFyLmNvbS9hdmF0YXIvMTNhN2MyYzdkOGVkNTNkMDc2MzRkOGNlZWVkZjM0NTE_cz0yMDAmcj1wZyZkPW1tIiwiaWF0IjoxNTU0NTIxNjk1LCJleHAiOjE1NTQ1MjUyOTV9._SxRurShXS-SI3SE11z6nme9EoaD29T_DBFr8Qwngkg";
    final String secret = "secret";
    String secret64 = "c2VjcmV0";

    String encoded = Base64.encodeToString(secret.getBytes(), Base64.DEFAULT);

    Jws<Claims> jws;
    try {
        jws = Jwts.parser()         // (1)

                .setSigningKey(secret64)       // (2)
                .parseClaimsJws(token); // (3)

        // we can safely trust the JWT

    }
    catch (JwtException ex) {       // (4)
        // we *cannot* use the JWT as intended by its creator
        tv.setText(ex.toString());
    }

1 Ответ

2 голосов
/ 06 апреля 2019

Размер ключа проверки составляет 48 бит

Это утверждение рассказывает всю историю.Клавиша secret, которую вы использовали, слишком короткая.Если вы используете HS256, то есть HMAC с SHA-256, необходимо как минимум 256 бит или больше, ДОЛЖНО использоваться с алгоритмом HS256.

Как упомянуто в JSONВеб-алгоритмы

веб-алгоритмы JSON RFC 7518 утверждают, что ключ того же размера, что и выход хэша (например, 256 бит для «HS256») или более, ДОЛЖЕН использоваться сАлгоритм HS256.

Так что измените свой размер ключа, и вы готовы идти

...