Начальная длина алгоритма TOTP для HmacSHA512

#java #algorithm #cryptography #totp

#java #алгоритм #криптография #totp

Вопрос:

Я пытаюсь реализовать алгоритм TOTTP, описанный здесь: https://www.rfc-editor.org/rfc/rfc6238

 Key key = new SecretKeySpec(seed.getBytes(StandardCharsets.UTF_8), "HmacSHA512");
 

Однако в RFC говорится, что:

 Seed for HMAC-SHA512 - 64 bytes
     String seed64 = "3132333435363738393031323334353637383930"  
     "3132333435363738393031323334353637383930"  
     "3132333435363738393031323334353637383930"  
     "31323334";
 
  1. Это seed64 64 байта, и что произойдет, если я не передам начальное значение в 64 байта, как я делаю при генерации ключа (мое начальное значение имеет произвольную длину)?
  2. Должен ли я использовать кодировку Base64 для моего начального числа?

Комментарии:

1. Из RFC ясно, что эти примеры «начальных значений» имеют шестнадцатеричную кодировку и поэтому должны быть шестнадцатерично декодированы до byte[] первого. Однако вы можете добиться того же результата, сохранив вместо этого строку ASCII, представленную шестнадцатеричными данными, а затем используя .getBytes() метод, который у вас есть. Строка ASCII — это «12345678901234567890123456789012345678901234567890123456789012345678901234434».

2. Итак, есть ли проблема в использовании начального значения, которое меньше 64 байт?