rtsp鉴权认证(密码登录)

Rtsp认证主要分为两种:

基本认证(basic authentication)和摘要认证( digest authentication )。

基本认证是http 1.0提出的认证方案,其消息传输不经过加密转换因此存在严重的安全隐患。

摘要认证是http 1.1提出的基本认证的替代方案,其消息经过MD5哈希转换因此具有更高的安全性。

1.基本认证 (basic 认证)

流程如下:

步骤1:客户端发送DESCRIBE请求到服务端

DESCRIBE rtsp://10.175.30.35 RTSP/1.0
CSeq: 6
User-Agent: LibVLC/2.2.4 (LIVE555 Streaming Media v2016.02.22)
Accept: application/sdp

步骤2:RTSP服务端认为没有通过认证,发出WWW-Authenticate认证响应

RTSP/1.0 401 Unauthorized
CSeq: 6
WWW-Authenticate: Basic realm=“000102030405”
Date: Tue, Mar 19 2019 07:07:12 GMT

步骤3:客户端携带Authorization串再次发出DESCRIBE请求

DESCRIBE rtsp://10.175.30.35 RTSP/1.0
CSeq: 7
Authorization: Basic YWRtaW46YWJjZDEyMzQ=
Accept: application/sdp

其中,“YWRtaW46YWJjZDEyMzQ=” 是通过对username:password 进行base64编码所得。服务端对 “YWRtaW46YWJjZDEyMzQ=” 解码得出 “admin:abcd1234”

2.摘要认证 Digest authentication

认证流程:

步骤1:客户端发送DESCRIBE请求到服务端

DESCRIBE rtsp://10.175.30.35 RTSP/1.0
CSeq: 6
User-Agent: LibVLC/2.2.4 (LIVE555 Streaming Media v2016.02.22)
Accept: application/sdp

步骤2:服务器端返回401错误,提示未认证并以nonce质询

RTSP/1.0 401 Unauthorized
CSeq: 6
WWW-Authenticate: Digest realm=“000102030405”, nonce=“59caf6cbb9d5dd0ae2a168059919f559”, stale=“FALSE”
WWW-Authenticate: Basic realm=“000102030405”
Date: Tue, Mar 19 2019 07:07:12 GMT

注意:服务器端既返回WWW-Authenticate: Digest,也返回WWW-Authenticate: Basic说明两种方式都支持。

步骤3:客户端以用户名,密码,nonce,HTTP方法,请求的URI等信息为基础产生response信息进行反馈

DESCRIBE rtsp://10.175.30.35 RTSP/1.0
CSeq: 7
Authorization: Digest username=“admin”, realm=“000102030405”, nonce=“59caf6cbb9d5dd0ae2a168059919f559”, uri=“rtsp://10.175.30.35”, response=“039837838f10192c7dcb98b0485265e9”
User-Agent: LibVLC/2.2.4 (LIVE555 Streaming Media v2016.02.22)
Accept: application/sdp

步骤4:服务器对客户端反馈的response进行校验,通过则返回如下字段

RTSP/1.0 200 OK
CSeq: 7
Content-Type: application/sdp
Content-Base: rtsp://10.175.30.35/
Content-Length: 638

v=0
o=- 1552979233389795 1552979233389795 IN IP4 0.0.0.0
s=Media Presentation
e=NONE
b=AS:5100
t=0 0
a=control:rtsp://10.175.30.35/
m=video 0 RTP/AVP 96
c=IN IP4 0.0.0.0
b=AS:5000
a=recvonly
a=x-dimensions:1920,1200
a=control:track=1
a=rtpmap:96 H264/90000
a=fmtp:96 profile-level-id=420029; packetization-mode=1; sprop-parameter-sets=Z00AMpY1QPAEvTcBAQFAAAHCAABX5CE=,aO48gA==
m=audio 0 RTP/AVP 8
c=IN IP4 0.0.0.0
b=AS:50
a=recvonly
a=control:track=2
a=rtpmap:8 PCMA/8000
a=Audio_Bit:64000
a=Media_header:MEDIAINFO=494D4B48010200000400000111710110401F000000FA000000000000000000000000000000000000;
a=appversion:1.0

步骤5:客户端发起创建链接SETUP、PLAY等请求(用一样的方法计算response)

2.2 response计算方法
RTSP客户端应该使用username + password并计算response如下:

1)当password为MD5编码,则

response = md5( password:nonce:md5(public_method:url) );
2)当password为ANSI字符串,则

response= md5( md5(username:realm:password):nonce:md5(public_method:url) );
客户端在每次发起不同的请求方法时都需要计算response字段,同样在服务器端校验时也默认采取同样的计算方法。

此种方式好处是认证过程中并不涉及密码的传输,所以该种方式安全性更高。

Server端处理:保存Client发过来的username、realm、nonce、method、uri等信息,通过username找到password并结合realm、nonce、method、uri计算得出Server端的server_response,对比验证Client发过来的response是否一致,一致则通过验证,不一致则验证失败。

代码:

static int md5(unsigned char *src_str, int src_len, unsigned char *dst_str) 

{

 int i=0; 

 unsigned char decrypt[16] ; 

 MD5_CTX md5; 

 MD5Init(&md5); 

 MD5Update(&md5,src_str,src_len); 

 MD5Final(&md5,decrypt); 

 printf("加密前:%s\n加密后:",src_str); 

 for(i=0;i<16;i++) { printf("%02x",decrypt[i]); sprintf(&dst_str[i*2], "%02x", decrypt[i]); } 

 printf("\n\n"); 

}

int main(int argc, char *argv[])

{

    //response= md5( md5(username:realm:password):nonce:md5(public_method:url) );

    unsigned char username[16]="admin", realm[32]="000102030405", passwd[16]="abcd1234";

    unsigned char method[16]="DESCRIBE", url[128]="rtsp://10.175.30.35", nonce[128]="59caf6cbb9d5dd0ae2a168059919f559";

    unsigned char sa[128]="", ra[128]="", na[128]="";

    unsigned char ha1[64]="", ha2[64]="", ha3[64]="";

    sprintf(sa, "%s:%s:%s", username, realm, passwd);

    md5(sa, strlen(sa), ha1);

    sprintf(ra, "%s:%s", method, url);

    md5(ra, strlen(ra), ha2);

    sprintf(na, "%s:%s:%s", ha1, nonce, ha2);

    md5(na, strlen(na), ha3);

    return 0;

}

运行打印信息:

加密前:admin:000102030405:abcd1234

加密后:8d4159aab5b6802e91e0e5777da80e6e

加密前:DESCRIBE:rtsp://10.175.30.35

加密后:0683df5784efa6a374f6f673c23324c5

加密前:8d4159aab5b6802e91e0e5777da80e6e:59caf6cbb9d5dd0ae2a168059919f559:0683df5784efa6a374f6f673c23324c5

加密后:039837838f10192c7dcb98b0485265e9

  • 14
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: HiSilicon是一家领先的芯片设计公司,其产品被广泛应用于视频监控、安防等领域。RTSP是一种实时流传输协议,用于在网络上进行音视频传输。HiSilicon RTSP是指HiSilicon公司开发的支持RTSP协议的视频流传输解决方案。 HiSilicon RTSP具有以下特点和优势: 1. 高性能:HiSilicon RTSP产品采用先进的芯片设计技术,能够实现高清视频流的传输和处理,保证视频质量和流畅性。 2. 低时延:HiSilicon RTSP产品在传输过程中具有较低的时延,可以实现实时的音视频传输,适用于需要及时响应的应用场景。 3. 稳定可靠:HiSilicon RTSP产品经过严格的测试和验证,具有较高的稳定性和可靠性,能够长时间稳定运行,减少故障和错误。 4. 灵活性:HiSilicon RTSP产品支持多种不同类型的视频传输,可以根据用户需求进行配置和定制,适用于不同场景和应用要求。 5. 安全性:HiSilicon RTSP产品采用先进的数据加密技术和安全措施,保证数据传输的安全性,防止信息泄漏和网络攻击。 总之,HiSilicon RTSP是一种高性能、低时延、稳定可靠、灵活可靠的视频流传输解决方案,适用于各种视频监控和安全领域的应用。 ### 回答2: HiSilicon是一家专注于半导体技术的公司,其产品和解决方案广泛应用于视频领域。其中,HiSilicon的RTSP(Real-Time Streaming Protocol)技术是一种实时流媒体传输协议。 RTSP是一种建立在TCP/UDP协议上的应用层协议,主要用于控制媒体服务器与客户端之间的流媒体数据传输。它提供了诸如播放、暂停、停止、快进、慢放等功能,支持实时性较强的音视频数据传输。 HiSilicon基于RTSP协议开发的解决方案可以满足实时视音频传输的需求,广泛应用于视频监控、视频会议、网络直播等领域。通过RTSP协议,用户可以方便地在客户端设备上实时接收和控制远程视频流。 通过HiSilicon的RTSP技术,用户可以在任何网络环境下,通过支持RTSP协议的客户端设备,实现实时观看远程摄像机、录像机等视频设备的内容。同时,RTSP也具备扩展性,可以与其他协议结合使用,支持高级功能如权限认证、数据加密等。 总之,HiSilicon的RTSP技术为实时流媒体传输提供了高效、稳定的解决方案。它使用户能够方便地控制和接收远程视频流,并广泛应用于视频监控、视频会议和网络直播等领域。 ### 回答3: HiSilicon RTSP(Real Time Streaming Protocol)是一种实时流媒体传输协议。它被广泛应用于视频监控、互联网直播和视频通信等领域。HiSilicon是华为旗下的半导体制造公司,他们开发了一系列支持RTSP协议的芯片。 HiSilicon RTSP协议允许客户端实时请求和传输音视频数据,提供了灵活可靠的实时传输服务。与传统的HTTP协议相比,RTSP协议更加适用于需要高质量、低延迟传输的应用场景。 HiSilicon RTSP协议的特点包括: 1. 实时传输:RTSP协议通过UDP或TCP协议实现实时的音视频数据传输,保证了传输的及时性和准确性。 2. 功能丰富:RTSP协议支持音视频的实时传输、实时控制和回放等功能。客户端可以请求特定位置的视频,进行快进、快退、暂停等操作。 3. 兼容性:RTSP协议在多种网络环境下都具备良好的兼容性,可以适应不同类型的网络和设备。 4. 安全性:RTSP协议支持使用密码进行身份验证,确保只有授权用户能够访问和传输音视频数据。 HiSilicon的芯片支持RTSP协议,可以帮助厂商快速开发基于实时流媒体的应用产品。借助HiSilicon的芯片和RTSP协议,我们可以轻松地实现视频监控、互联网直播和视频通信等功能。这使得我们的生活更加便捷、安全和舒适。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悠哉无忧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值