ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

对接海康威视综合安防管理平台——调用认证

2022-08-19 00:02:24  阅读:290  来源: 互联网

标签:body UTF String 威视 ca 安防 海康 header Ca


官方给的示例虽说很详细,但是对于我这个第一次对接三方平台的人来说还是很懵逼的,所以只能通过不断的测试摸索最后才得到了这个签名结果,作为记录以及为后来的人做参考。

认证方式:

  一:AK\SK摘要认证

    public static void test034(){
        try {
            /*请求数据信息*/
            // 请求地址:http://www.example.com/artemis/api/example?qa=a&qb=B
            // Http Method:POST
            // appKey:29666671
            // appSecret:empsl21ds3
            // X-Ca-Timestamp:1479968678000

            /* Headers*/
            // Accept:*/*
            // Accept-Encoding:gzip, deflate, sdch
            // Accept-Language:zh-CN,zh;q=0.8
            // Connection:keep-alive
            // Content-Length:0
            // Content-Type:text/plain;charset=UTF-8
            // Cookie:JSESSIONID=D9C4A515CACAC31211D1612039D062B7
            // header-A:A
            // header-B:b
            // X-Ca-Key:29666671
            // X-Ca-Signature-Headers:header-a,header-b,x-ca-key,x-ca-timestamp
            // X-Ca-Timestamp:1479968678000
            // X-Requested-With:XMLHttpRequest

            /*Query*/
            // qa:a
            // qb:B

            /*BodyForm*/
            // a-body:a
            // x-body:x

            /*签名字符串*/
            String stringToSign =
                    "POST\n" +
                    "*/*\n" +
                    "text/plain;charset=UTF-8\n" +
                    "header-a:A\n" +
                    "header-b:b\n" +
                    "x-ca-key:29666671\n" +
                    "x-ca-timestamp:1479968678000\n" +
                    "/artemis/api/example?a-body=a&qa=a&qb=B&x-body=x";

            // 请求数据中的 “appSecret”
            String secret = "empsl21ds3";

            //javax.crypto.Mac 加密解密(消息认证码)
            Mac hmacSHA256 = javax.crypto.Mac.getInstance("HmacSHA256");
            byte[] keyBytes = secret.getBytes("UTF-8");
            hmacSHA256.init(new SecretKeySpec(keyBytes, 0, keyBytes.length, "HmacSHA256"));

            // java.util.Base64 方式
            String sign1 = Base64.getEncoder().encodeToString(hmacSHA256.doFinal(stringToSign.getBytes("UTF-8")));

            // org.apache.commons.codec.binary.Base64 方式
            byte[] bytes = org.apache.commons.codec.binary.Base64.encodeBase64(hmacSHA256.doFinal(stringToSign.getBytes("UTF-8")));
            String sing2 = new String(bytes, "UTF-8");

            /**
             * 官方签名结果:JRpUpk1ETjzr5gsbo4qoEA9EiQPejvNz12B837xV5HI=
             */
            System.out.println(sign1); // JRpUpk1ETjzr5gsbo4qoEA9EiQPejvNz12B837xV5HI=
            System.out.println(sing2); // JRpUpk1ETjzr5gsbo4qoEA9EiQPejvNz12B837xV5HI=
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        } catch (InvalidKeyException e) {
            e.printStackTrace();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
    }

 

  二:access_token认证

(未看,待续)

 

标签:body,UTF,String,威视,ca,安防,海康,header,Ca
来源: https://www.cnblogs.com/lucky-jun/p/16600576.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有