0

我有一个解密媒体数据包的应用程序。它要求我提供万能钥匙和盐钥匙。

我的 SDP 为我(协商结束后)提供了 AES_CM_128_HMAC_SHA1_80 内联:Fu8vxnU4x1fcCzbhNrtDV0eq4RnaK4n2/jarOigZ

根据 SDP rfc,当主密钥为 X 字节且盐为 Y 字节时,“内联:”之后的字符串为:“连接的主密钥和盐,base64 编码”。

我累了:

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

然后将前 x 个字节发送给 master,另一个 Y 字节用于 salt。

但我的应用程序说我的密钥错了,我不明白 - 我应该使用 Convert.FromBase64String 以外的其他密钥吗?

4

1 回答 1

3

好的,我猜对了。在 AES_CM_128_HMAC_SHA1_80 密码中,主密钥为 16 字节,盐为 14 字节长。

应该做的是在密钥上使用 Convert.FromBase64String ,它产生一个 30 字节长的数组,将前 16 个作为 master,最后 14 个作为 salt。

解密算法应该从中产生会话密钥和盐(连同其他信息)。

于 2011-08-25T09:03:03.497 回答