自己用Java写的一个可以参考一下,我这种5年没写过代码的人都能写,难道比我还新手?你需要多一些信念!

package com.baidu.cloudservice.bfr;

import java.io.UnsupportedEncodingException;

import java.net.URLEncoder;

import java.nio.charset.Charset;

import java.util.Date;

import javax.crypto.Mac;

import javax.crypto.spec.SecretKeySpec;

import org.apache.commons.codec.binary.Hex;

import com.baidubce.BceClientException;

import com.baidubce.util.DateUtils;

public class BFRSign {

private static final String DEFAULT_ENCODING = "UTF-8";

private static final Charset UTF8 = Charset.forName(DEFAULT_ENCODING);

public static void main(String[] args) throws Exception {

// System.out.println(DateUtils.formatAlternateIso8601Date(new Date()));

String accessKey = "xxxxxxxxxxxxxxxxxxxxxxxx";

String secretKey = "xxxxxxxxxxxxxxxxxxxxxxxx";

String host = "face.bj.baidubce.com";

//String path = "/v1/app";//工程

//String path = "/v1/app/40004/group";//组

//String path = "/v1/app/40004/person";  //人物

//String path ="/v1/app/40004/person/Steve";//验证图片是否属于某个人

String path ="/v1/app/40004/group/yerik"; //验证图片是否属于某个组

String timestamp = DateUtils.formatAlternateIso8601Date(new Date());

int expiresInSeconds = 18000;

String CanonicalURI = URLEncoder.encode(path, "UTF-8").replace("%2F","/");

System.out.println("CanonicalURI: "+CanonicalURI);

//        String queryString=new String("verify");

String queryString=new String("identify");

String canonicalQueryString =canonicalQueryString(queryString);

//String requestMethod="GET";

String requestMethod="POST";

//String requestMethod="PUT";

String canonicalHeaders = "host:"+host;

String CanonicalRequest = joinN("\n", new String[] { requestMethod,CanonicalURI, canonicalQueryString, canonicalHeaders });

System.out.println("CanonicalRequest: "+CanonicalRequest);

/*输出结果、请求内容

{"appId":"40004"}

{ "groupName": "yerik"}

{

"personName": "Steve",

"groupName": "yerik",

"faces": [

{

"bosPath":"yerik-bfr/1.jpg"

},

{

"bosPath":"yerik-bfr/2.jpg"

},

{

"bosPath":"yerik-bfr/3.jpg"

},

{

"bosPath":"yerik-bfr/4.jpg"

},

{

"bosPath":"yerik-bfr/5.jpg"

},

{

"bosPath":"yerik-bfr/6.jpg"

},

{

"bosPath":"yerik-bfr/7.jpg"

},

{

"bosPath":"yerik-bfr/8.jpg"

}

]

}

{

"bosPath":"yerik-bfr/test1.jpg"

}

*/

//通过AK+时间戳+过期时间拼接成signKeyInfo

String signKeyInfo = "bce-auth-v1" + "/" + accessKey + "/" + timestamp+ "/" + expiresInSeconds;

System.out.println("signKeyInfo: "+signKeyInfo);

//将signKeyInfo与SK加密生成signingKey

String signingKey = sha256Hex(secretKey, signKeyInfo);

System.out.println("signingKey: "+signingKey);

//将signingKey与CanonicalRequest加密生成signature

String signature = sha256Hex(signingKey, CanonicalRequest);

//通过signature合成authorization

String authorization = joinN("/", new String[] { "bce-auth-v1",accessKey, timestamp, String.valueOf(expiresInSeconds), "host",signature });

System.out.println("authorization: \n"+authorization);

System.out.println("URL: \nhttp://"+host+CanonicalURI+"?"+canonicalQueryString);

}

private static String joinN(String split, String[] args) {

String ret = args[0];

for (int i = 1; i < args.length; i++)

ret = ret + split + args[i];

return ret;

}

public static String sha256Hex(String signingKey, String stringToSign) {

try {

Mac mac = Mac.getInstance("HmacSHA256");

mac.init(new SecretKeySpec(signingKey.getBytes(UTF8), "HmacSHA256"));

return new String(Hex.encodeHex(mac.doFinal(stringToSign

.getBytes(UTF8))));

} catch (Exception e) {

throw new BceClientException("Fail to generate the signature", e);

}

}

//canonicalQueryString转换

public static String canonicalQueryString(String queryString) throws Exception{

String canonicalQueryString="";

String[] keyValueList =queryString.split("&");

int position;

String key=null;

String value=null;

if (queryString.isEmpty()){

System.out.println("canonicalQueryString1: "+canonicalQueryString);

return canonicalQueryString;

}else{

for (int i=0;i

position=keyValueList[i].indexOf("=");

if (position<0){

key=URLEncoder.encode(keyValueList[i], "UTF-8");

value="";

}else{

key=URLEncoder.encode(keyValueList[i].substring(0,position), "UTF-8");

value=URLEncoder.encode(keyValueList[i].substring(position+1,keyValueList[i].length()), "UTF-8");

}

//System.out.println("Key"+i+": "+key+"----"+"Value"+i+": "+value);

keyValueList[i]=key+"="+value;

if(i==keyValueList.length-1){

canonicalQueryString=canonicalQueryString+keyValueList[i];

}else{

canonicalQueryString=canonicalQueryString+keyValueList[i]+"&";

}

}

System.out.println("canonicalQueryString2: "+canonicalQueryString);

}

return canonicalQueryString;

}

}

java百度api人脸识别_百度人脸识别api demo相关推荐

  1. 人脸识别_云端人脸识别-人脸识别SDK+API-人脸识别闸机解决方案

    云端人脸识别-人脸识别SDK+API-人脸识别闸机解决方案 人脸识别闸机-人脸识别闸机解决方案 软硬一体的人脸识别闸机解决方案,提升人员系统化管理的安全性与便捷性 方案构成 针对人员出入的闸机及门禁场 ...

  2. 人脸反光识别和读数识别_云端人脸识别-人脸识别SDK+API-人脸识别闸机解决方案...

    云端人脸识别-人脸识别SDK+API-人脸识别闸机解决方案 人脸识别闸机-人脸识别闸机解决方案 软硬一体的人脸识别闸机解决方案,提升人员系统化管理的安全性与便捷性 方案构成 针对人员出入的闸机及门禁场 ...

  3. python人脸特征提取_实现人脸识别、人脸68个特征点提取,或许这个 Python 库能帮到你!...

    之前写过一篇关于实现人脸识别的文章,Z先生点记:Pyqt5 + 百度 API 打造一个图像人脸识别.分割的小程序​zhuanlan.zhihu.com 里面用到的技术是通过调用百度 API 实现的,本 ...

  4. java百度地图逆地址解析_百度地图逆地址解析

    什么是Geocoding? Geocoding API 是一类简单的HTTP接口,用于提供从地址到经纬度坐标或者从经纬度坐标到地址的转换服务,用户可以使用C# .C++.Java等开发语言发送HTTP ...

  5. webbrowser 百度列表点击_百度OCR和百度翻译api申请教程

    百度api的免费额度在同行中算是非常高的,很多软件或者网页都会调用百度的相关api,方便了很多人.调用识别api的免费额度是每日50000次. 同时,百度翻译的免费额度也非常高,每月的免费额度达到 2 ...

  6. 人脸识别与膜虹识别_超越人脸识别——虹膜识别vs静脉识别

    谈及人脸识别,那简直是人尽皆知,应用广泛了.以往玩笑"靠脸"吃饭,如今已不再是玩笑,随着科技发展越发迅猛,我们的生活中德"刷脸"都在慢慢落后.其中"盗 ...

  7. 人物关系 人脸识别_「人脸识别」可以代替「人像鉴定」吗?

    刷脸支付.刷脸安检.刷脸取快递.刷脸住酒店--人脸识别正在替代钥匙.公交卡.身份证.银行卡等,迅速渗透人们日常生活和工作的方方面面,一个"全民刷脸"的时代正在加速到来. 在司法鉴定 ...

  8. 夜间环境人脸识别_动态人脸识别系统的优势

    TH-894是一款天煌电子全新的三防动态人脸识别xt终端采用嵌入式系统.功耗低,运行更稳定.数据更安全.使用高性能智能处理器,基于深度学习的人脸识别与抓拍信息提取,极大的提高了人脸抓拍率.采用夜间红外 ...

  9. 百度移动应用安卓_安卓车牌识别应用于移动警务通提高使用体验度

    通常交警在处理路边违章停车的情况时,采用的是传统的手工录入车牌信息的方式,在面对庞大数量的汽车时显得力不从心,目前,我国警务通.停车场手持收费机等移动终端的使用比较普及,如果在这些终端上能够集成车牌识 ...

  10. 百度seo排名规则_百度关键词seo优化排名如何上首页

    无涯孤客百度关键词seo优化排名快速上首页,是通过使用多种百度算法优化,让网站在搜索引擎上排名更好,我们做百度关键词排名的话,要比市面上绝大公司做的要稳定,也希望各位可以相信我们,我们可以将百度关键词 ...

最新文章

  1. MS SQL专用管理员连接DAC
  2. ebs 供应商地点信息_实探荣耀办公地:与高通接近达成合作,加快供应商整合脚步...
  3. php mysqli::close()
  4. Android:日常学习笔记(6)——探究活动(3)
  5. Python基础02-序列及通用操作
  6. 深入浅出SQL(1)
  7. argv python 提示输入_Python解释器
  8. 图Graph--最小生成树
  9. asp.net core权限模块的快速构建
  10. 栈溢出笔记1.8 字符串问题
  11. 单行溢出文本显示省略号的方法(兼容IE FF)
  12. android 布局圆变椭圆,Android实现自定义圆形、圆角和椭圆ImageView(使用Xfermode图形渲染方法)...
  13. yaf index.php,yaf框架访问路由为什么始终访问INDEX下的INDEX控制器下的INDEX方法
  14. ArcGIS 10.5 及 ArcGIS Server下载安装破解环境配置
  15. PyCharm黄色波浪线提示: Simplify chained comparison
  16. python常用marker
  17. 7-12 个位数字统计 (15 分)
  18. 【图解HTTP】|【09】Web的攻击技术
  19. 海尔云悦2db微型计算机,客厅小伙伴 海尔云悦mini2迷你主机评测
  20. 微信小程序----App生命周期

热门文章

  1. python: how to delete a given item if it exist in the list
  2. Hhadoop-2.7.0中HDFS写文件源码分析(二):客户端实现(1)
  3. “.Net 社区虚拟大会”(dotnetConf) 2016 Day 3 Keynote: Scott Hanselman
  4. 转 C++STL之string
  5. JQuery中的事件以及动画
  6. 30个在线学习设计与开发的站点
  7. TFS中的测试计划(十)
  8. Global.asax
  9. Ansible06-管理roles
  10. Ansible01-Ansible基础和部署