sip协议注册时response值的计算方法

  sip注册时有四个步骤,

  1.客户端向服务端发送不带Authorization字段的注册请求

  2.服务端回401,在回复消息头中带WWW_Authorization

  3.客户端向服务端发送带Authorization字段注册请求,Authorization字段中的response信息是

   根据收到的WWW_Authorization中的信息和本地的一个密码信息计算出来的。

  4.服务端会自己计算一个Response值,和客户端发来的对比,一样的会回客户端一个200OK,表示

   注册成功。比对不一样回其他错误码给客户端。

  

  response的计算方法:

  1)HASH1=MD5( username:realm:passwd)

  2)HASH2=MD5(method:uri)

  3)response=MD5(HA1:nonce:HA2)

  exosip/osip是通过下面的两个函数计算response,该exosip/osip的版本是2-4.1.0。

  char HA1[265],HA2[265];

  DigestCalcHA1(0, pszUser, realm_.c_str(), passwd, 0, 0, HA1);

  该函数通过pszUser,realm, passwd三个值产生HA1

  pszUser, realm是客户端发送过来的。passwd是服务端本地的,其值事先和客户端定好的,客户端的发来的response值也要通过他自己本地

  的pwd来计算。

  DigestCalcResponse(HA1, pszNonceFromHeader,pszNonceCount, pszCNonce, pszopo, 1, pszMethod, pszUri, HA2, Response);

  先通过method:uri产生HA2

  如果参数pszopo是空,通过HA1:nonce:HA2产生Response

  

参考:GB/T28181-2011 《安全防范视频监控联网系统信息传输、交换、控制技术要求》

   http://blog.chinaunix.net/uid-26212859-id-3485297.html

时间: 2024-07-28 12:43:11

sip协议注册时response值的计算方法的相关文章

SIP Realm 认证 Response 值的计算方法

sip 协议中 realm 认证中 Response 值的计算方法: from hashlib import md5   username = '10000′   realm = 'Yate'   password = '10000′      nonce = '39a45e7afdc6ec69d156ed1de42cfc5b'   method = 'REGISTER'   uri = 'sip:127.0.0.1′      print md5('%(hash1)s:%(nonce)s:%(

SIP协议注册流程

1. 注册时,客户端与服务器交互的数据包如下: 1.1 UAC->UAS UAC向UAS注册,下面是具体注册消息 From字段:指明该REGISTER请求消息由UAS(IP地址:192.169.1.102)控制的UAC发起的. To字段:指明REGISTER请求接收方的地址.此时REGISTER请求的接收方为IP地址为192.169.1.230的UAS.(这个值和To头域的值相同,除非这个请求是第三方发起的注册请求.) Call-ID字段:UAC发出的给某个注册服务器(registrar)的所有

基于GBT28181:SIP协议组件开发-----------第三篇SIP注册流程分析实现

上两章节简要的讲解了SIP组件开发接口和开发环境的搭建.在本节将实现Linux 32平台的UAS和UAC,当然该UAS和UAC只实现了注册功能,并且是基于自主开发SIP组件libGBT28181SipComponent.so的,没有这个组件是运行不了的.其他功能在后续章节中讲解. 首先简单讲解一下GBT28181关于注册描述 一. GBT28181注册的流程如下图 电力系统注册稍微复杂点,但原来基本相同.多了个刷新注册的过程. 二.GBT28181关于注册的解释如下 三.SIP协议简介 一个合法

基于GBT28181:SIP协议组件开发-----------第四篇SIP注册流程eXosip2实现

原创文章,引用请保证原文完整性,尊重作者劳动,原文地址http://www.cnblogs.com/qq1269122125/p/3945294.html. 上章节讲解了利用自主开发的组件SIP组件libGBT28181SipComponent.so实现Linux 32平台的UAS和UAC,因为该组件采用很多新的技术,所以采用该组件效率无疑是很高的.但是对于想学习SIP协议,或者想了解eXosip2开发流程的程序员,是不能从根本上了解学习的.因为所有的功能都封装在libGBT28181SipCo

安卓平台基于SIP协议实现注册,聊天功能

============问题描述============ 不涉及音频,视频发送,只要实现注册,和聊天功能就行, 网上下了sipdroid的源码,但是XML中配置的<uses-sdk android:minSdkVersion="3" android:targetSdkVersion="4"/> 这段没明白,资料里说安卓最低支持SIP协议的API level是9,但是这版本不匹配呀,有大牛指导下么 ============解决方案1============

SIP 协议详解

SIP 协议详解 一.Sip协议简介: SIP(Session Initiation Protocol,会话初始协议)是由IETF(Internet Engineering Task Force,因特网工程任务组)制定的多媒体通信协议.广泛应用于CS(Circuit Switched,电路交换).NGN(Next Generation Network,下一代网络)以及IMS(IP Multimedia Subsystem,IP多媒体子系统)的网络中,可以支持并应用于语音.视频.数据等多媒体业务,

通信系列2: 深入浅出SIP协议

传统电话是电磁波的通信,当电话技术发展到IP技术时代,SIP协议成为了电话通信标准协议,不仅可以通电话.还可以收发信息.视频.开会.放PPT.事实上,今天的通信业已全面采用SIP协议作为通信标准,无论是固定电话.还是移动电话,其后台都是以SIP协议完成通话.交换的. 很多软件也采用SIP协议进行通信,如:Windows Messenger. 学习多天,记录如下: 一.从打电话的过程,理解SIP协议 (一) 分析一下打电话的过程 两个电话之间的一次通话称为一个会话(Session), 首先,通话双

【转】SIP协议 会话发起协议

转自:https://www.cnblogs.com/gardenofhu/p/7299963.html 会话发起协议(SIP)是VoIP技术中最常用的协议之一.它是一种应用层协议,与其他应用层协议协同工作,通过Internet控制多媒体通信会话. SIP - 概述 以下是有关SIP的几点注意事项 - SIP是用于通过因特网协议创建,修改和终止多媒体会话的信令协议.会话只不过是两个端点之间的简单调用.端点可以是智能电话,笔记本电脑或可以通过因特网接收和发送多媒体内容的任何设备. SIP是由IET

【报文】理解HTTP协议的Request/Response(请求响应)模型

[报文]理解HTTP协议的Request/Response(请求响应)模型 系列目录 [简介]"请求/响应"模型 http://www.cnblogs.com/engraver-lxw/p/7550514.html [原理]理解HTTP协议的Request/Response(请求响应)模型 http://www.cnblogs.com/engraver-lxw/p/7550691.html [报文]理解HTTP协议的Request/Response(请求响应)模型--当前 http:/