使用Convert.FromBase64String从SIP SDP检索主密钥和salt

时间:2011-07-18 09:19:32

标签: encryption base64 aes sdp

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

我的SDP(在谈判结束后)提供给我 AES_CM_128_HMAC_SHA1_80内联:Fu8vxnU4x1fcCzbhNrtDV0eq4RnaK4n2 / jarOigZ

根据SDP rfc,“inline:”之后的字符串是: “连接主密钥和salt,base64编码” 当主密钥是X字节而盐是Y字节时。

我在招架:

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

然后将第一个x字节输入到主服务器,将另一个字节获取为盐。

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

1 个答案:

答案 0 :(得分:2)

好的,我做对了。 在AES_CM_128_HMAC_SHA1_80密码上,主密钥是16字节,盐是14字节长。

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

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