получение главного ключа и соли из SIP SDP с помощью Convert.FromBase64String

У меня есть приложение для расшифровки медиапакетов. это требует, чтобы я предоставил мастер-ключ и солевой ключ.

мой SDP предоставил мне (после завершения переговоров) встроенный AES_CM_128_HMAC_SHA1_80: Fu8vxnU4x1fcCzbhNrtDV0eq4RnaK4n2 / jarOigZ

согласно SDP rfc строка после "inline:" выглядит так: "объединенный главный ключ и соль, закодированные в base64", когда главный ключ составляет X байтов, а соль - Y байтов.

Вяжу:

byte[] masterAndSalt = Convert.FromBase64String("Fu8vxnU4x1fcCzbhNrtDV0eq4RnaK4n2/jarOigZ")

а затем передать первые x байтов мастеру, а остальные Y - для соли.

но мое приложение говорит, что мои ключи неправильные, я не понимаю - следует ли мне использовать что-то еще, кроме Convert.FromBase64String?


person briler    schedule 18.07.2011    source источник
comment
Вы уверены, что порядок конкатенации - это «ключевая соль», а не «солевой ключ»? Вы уверены, что преобразование происходит успешно, а не завершается ошибкой и возвращает значение null?   -  person rossum    schedule 18.07.2011


Ответы (1)


Хорошо, я понял. в шифре AES_CM_128_HMAC_SHA1_80 главный ключ имеет длину 16 байт, а размер соли - 14 байт.

что нужно сделать, так это использовать Convert.FromBase64String для ключа, который создал 30-байтовый массив, взять первые 16 как главные, а последние 14 как соль.

алгоритм дешифрования должен выдавать из него сеансовый ключ и соль (вместе с другой информацией).

person briler    schedule 25.08.2011