Кодирование Base64 SHA1 с помощью Java

#java #base64 #sha1

Вопрос:

У меня возникли некоторые проблемы с получением правильной строки в кодировке base64 с помощью java.

Это строка, которую необходимо закодировать: " POSTnmBAcWORUK93FBOz6jsAuqw==napplication/jsonnFri, 26 Jul 2019 06:00:46 GMTn/v1/api/userStationList"

Это секретный ключ: 6680182547

И мой код:

 public static String HmacSHA1Encrypt(String encryptText, String keySecret) throws Exception 
{ 
    byte[] data= keySecret.getBytes("UTF-8"); 
    SecretKey secretKey = new SecretKeySpec(data, "HmacSHA1"); 
    Mac mac = Mac.getInstance("HmacSHA1"); 
    mac.init(secretKey); 
    byte[] text = encryptText.getBytes("UTF-8"); 
    byte[] result = mac.doFinal(text); 
    return Base64.getEncoder().encodeToString(result);
} 
 

Называю это:

 String test = HmacSHA1Encrypt(" POSTnmBAcWORUK93FBOz6jsAuqw==napplication/jsonnFri, 26 Jul 2019 06:00:46 GMTn/v1/api/userStationList", "6680182547");
 

Я следую некоторым документам api, и я должен получить /2Np3q5h846q9cWEFUNtbL G7H8= , но вместо этого я получаю 4eiwJAFKXqrj4xvetzKUCodrNqI=

Отрывок из документов api: введите описание изображения здесь

Есть идеи, что не правильно?

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

1. Начальный пробел в строке предназначен и существует также в образце из документов?

2. Да, насколько я могу судить, добавил снип выше.

3. не могли бы вы предоставить ссылку на документы?

4. Не существует в Интернете, был отправлен только pdf-файл, но я загрузил его hre: smallpdf.com/…

5. Я думаю, вы неправильно поняли кое-что из PDF. В нем говорится, что: The calculation result of Content-MD5 of "{"userId":"1145611319416590338"}" in the example is: mBAcWORUK93FBOz6jsAuqw== и в пункте 2.2.4 написано POSTn mBAcWORUK93FBOz6jsAuqw== …. Я имею в виду, что «результат», который должен быть получен, действительно записан в строке подписи. Поэтому я думаю, что проблема здесь в том, что то, что передается методу в качестве encryptText аргумента, — это не то, что вы должны передавать.