#python #azure #jwt #base64 #certificate
#python #azure #jwt #base64 #сертификат
Вопрос:
Я пытаюсь сгенерировать параметр x5t для заголовка, чтобы отправить запрос в Azure с использованием сертификата для аутентификации. В примере, приведенном в документах здесь: https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-certificate-credentials , это говорит о том, что хэш SHA-1 84E05C1D98BCE3A5421D225B140B36E86A3D5534 должен давать значение x5t hOBcHZi846VCHSJbFAs26Go9VTQ =
Когда я пытаюсь преобразовать этот хэш, используя следующее, я нахожу значение x5t равным ODRFMDVDMUQ5OEJDRTNBNTQyMUQyMjVCMTQwQjM2RTg2QTNENTUzNA==
Что я делаю не так в процессе преобразования?
import base64
x="84E05C1D98BCE3A5421D225B140B36E86A3D5534"
x5t = base64.b64encode(x.encode()).decode()
print(x)
Ответ №1:
Заданный хэш SHA-1
84E05C1D98BCE3A5421D225B140B36E86A3D5534
является длинным шестнадцатеричным числом. В вашем коде вы обрабатываете его как строку (например, «84»), но вам нужно интерпретировать его как шестнадцатеричное представление массива байтов (например, первый байт равен 0x84):
import base64
x = "84E05C1D98BCE3A5421D225B140B36E86A3D5534"
x5t = base64.b64encode(bytearray.fromhex(x))
print(x5t.decode())
Результатом является:
hOBcHZi846VCHSJbFAs26Go9VTQ =
Комментарии:
1. Спасибо, это имеет смысл