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

Encryption 使用Convert.FromBase64String从SIP SDP中检索主密钥和salt,encryption,base64,aes,sdp,Encryption,Base64,Aes,Sdp,我有一个解密媒体包的应用程序。 它需要我提供主钥匙和盐钥匙 我的SDP(谈判结束后)向我提供 AES_CM_128_HMAC_SHA1_80内联:Fu8vxnU4x1fcCzbhNrtDV0eq4RnaK4n2/jarOigZ 根据SDP rfc,“inline:”后面的字符串是: 连接的主密钥和salt,base64编码 当主密钥为X字节,salt为Y字节时 我在打轮胎: byte[] masterAndSalt = Convert.FromBase64String("Fu8vxnU4x1fc

我有一个解密媒体包的应用程序。 它需要我提供主钥匙和盐钥匙

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

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

我在打轮胎:

byte[] masterAndSalt = Convert.FromBase64String("Fu8vxnU4x1fcCzbhNrtDV0eq4RnaK4n2/jarOigZ")
然后将第一个x字节发送给主机,另一个Y字节发送给salt

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

好的,我说对了。 在AES_CM_128_HMAC_SHA1_80密码上,主密钥为16字节,salt为14字节长

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

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

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

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


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

您确定连接顺序是“密钥salt”而不是“salt密钥”吗?您确定转换成功而不是失败并返回null吗?您确定连接顺序是“key salt”而不是“salt key”吗?您确定转换成功而不是失败并返回null吗?