src/main/java/com/genersoft/iot/vmp/gb28181/auth/DigestServerAuthenticationHelper.java
@@ -235,55 +235,4 @@ return mdString.equals(response); } public static void main(String[] args) throws NoSuchAlgorithmException { MessageDigest messageDigest2 = MessageDigest.getInstance(DEFAULT_ALGORITHM); String realm = "DS-2CD2520F"; String username = "admin"; String passwd = "12345"; String nonce = "4d6a553452444d30525441364e6d4d304e6a68684e47553d"; String uri = "/ISAPI/Streaming/channels/101/picture"; // qop 保护质量 包含auth(默认的)和auth-int(增加了报文完整性检测)两种策略 String qop = "auth"; // 客户端随机数,这是一个不透明的字符串值,由客户端提供,并且客户端和服务器都会使用,以避免用明文文本。 // 这使得双方都可以查验对方的身份,并对消息的完整性提供一些保护 String cNonce = "C1A5298F939E87E8F962A5EDFC206918"; // nonce计数器,是一个16进制的数值,表示同一nonce下客户端发送出请求的数量 int nc = 1; String A1 = username + ":" + realm + ":" + passwd; System.out.println("A1: " + A1); String A2 = "GET" + ":" + uri.toString(); System.out.println("A2: " + A2); byte mdbytes[] = messageDigest2.digest(A1.getBytes()); String HA1 = toHexString(mdbytes); System.out.println("HA1: " + HA1); mdbytes = messageDigest2.digest(A2.getBytes()); String HA2 = toHexString(mdbytes); System.out.println("HA2: " + HA2); String cnonce = "93d4d37df32e1a85"; String KD = HA1 + ":" + nonce; if (nc != -1) { KD += ":" + "00000001"; } if (cnonce != null) { KD += ":" + cnonce; } if (qop != null) { KD += ":" + qop; } KD += ":" + HA2; System.out.println("KD: " + KD); mdbytes = messageDigest2.digest(KD.getBytes()); String mdString = toHexString(mdbytes); String response = "3993a815e5cdaf4470e9b4f9bd41cf4a"; System.out.println(mdString); } } src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java
@@ -232,7 +232,7 @@ ptzXml.append("</Info>\r\n"); ptzXml.append("</Control>\r\n"); Request request = headerProvider.createMessageRequest(device, ptzXml.toString(), "ViaPtzBranch", "FromPtzTag", "ToPtzTag"); Request request = headerProvider.createMessageRequest(device, ptzXml.toString(), "ViaPtzBranch", "FromPtzTag", null); transmitRequest(device, request); return true; @@ -268,7 +268,7 @@ ptzXml.append("</Info>\r\n"); ptzXml.append("</Control>\r\n"); Request request = headerProvider.createMessageRequest(device, ptzXml.toString(), "ViaPtzBranch", "FromPtzTag", "ToPtzTag"); Request request = headerProvider.createMessageRequest(device, ptzXml.toString(), "ViaPtzBranch", "FromPtzTag", null); transmitRequest(device, request); return true; } catch (SipException | ParseException | InvalidArgumentException e) { @@ -635,7 +635,7 @@ catalogXml.append("<DeviceID>" + device.getDeviceId() + "</DeviceID>\r\n"); catalogXml.append("</Query>\r\n"); Request request = headerProvider.createMessageRequest(device, catalogXml.toString(), "ViaDeviceInfoBranch", "FromDeviceInfoTag", "ToDeviceInfoTag"); Request request = headerProvider.createMessageRequest(device, catalogXml.toString(), "ViaDeviceInfoBranch", "FromDeviceInfoTag", null); transmitRequest(device, request);