阿里云视频点播解密DecryptKMSDataKeyRequest爬坑
这个是官网文档中给的引入文件,你会发现sdk-vod这个包中没有DecryptKMSDataKeyRequest这个类
<dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-core</artifactId><version>4.6.0</version>
</dependency>
<dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-vod</artifactId><version>2.16.5</version>
</dependency>
<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.62</version>
</dependency>
<dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-kms</artifactId><version>2.10.1</version>
</dependency>
搭建解密的demo中又有这个类,如果你用这个代码和上面引入的包,就会发现类一直都找不到
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.http.ProtocolType;
import com.aliyuncs.vod.model.v20170321.DecryptKMSDataKeyRequest;
import com.aliyuncs.vod.model.v20170321.DecryptKMSDataKeyResponse;
import com.aliyuncs.profile.DefaultProfile;
import com.sun.net.httpserver.Headers;
import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
import com.sun.net.httpserver.HttpServer;
import com.sun.net.httpserver.spi.HttpServerProvider;
import org.apache.commons.codec.binary.Base64;
import java.io.IOException;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.InetSocketAddress;
import java.net.URI;import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class HlsDecryptServer {private static DefaultAcsClient client;static {//KMS的区域,必须与视频对应区域String region = "";//访问KMS的授权AccessKey信息String accessKeyId = "";String accessKeySecret = "";client = new DefaultAcsClient(DefaultProfile.getProfile(region, accessKeyId, accessKeySecret));}/*** 说明:* 1、接收解密请求,获取密文密钥和令牌Token* 2、调用KMS decrypt接口获取明文密钥* 3、将明文密钥base64decode返回*/public class HlsDecryptHandler implements HttpHandler {/*** 处理解密请求* @param httpExchange* @throws IOException*/public void handle(HttpExchange httpExchange) throws IOException {String requestMethod = httpExchange.getRequestMethod();if ("GET".equalsIgnoreCase(requestMethod)) {//校验token的有效性String token = getMtsHlsUriToken(httpExchange);boolean validRe = validateToken(token);if (!validRe) {return;}//从URL中取得密文密钥String ciphertext = getCiphertext(httpExchange);if (null == ciphertext)return;//从KMS中解密出来,并Base64 decodebyte[] key = decrypt(ciphertext);//设置headersetHeader(httpExchange, key);//返回base64decode之后的密钥OutputStream responseBody = httpExchange.getResponseBody();responseBody.write(key);responseBody.close();}}private void setHeader(HttpExchange httpExchange, byte[] key) throws IOException {Headers responseHeaders = httpExchange.getResponseHeaders();responseHeaders.set("Access-Control-Allow-Origin", "*");httpExchange.sendResponseHeaders(HttpURLConnection.HTTP_OK, key.length);}/*** 调用KMS decrypt接口解密,并将明文base64decode* @param ciphertext* @return*/private byte[] decrypt(String ciphertext) {DecryptKMSDataKeyRequest request = new DecryptKMSDataKeyRequest();request.setCipherText(ciphertext);request.setProtocol(ProtocolType.HTTPS);try {DecryptKMSDataKeyResponse response = client.getAcsResponse(request);String plaintext = response.getPlaintext();System.out.println("PlainText: " + plaintext);//注意:需要base64 decodereturn Base64.decodeBase64(plaintext);} catch (ClientException e) {e.printStackTrace();return null;}}/*** 校验令牌有效性* @param token* @return*/private boolean validateToken(String token) {if (null == token || "".equals(token)) {return false;}//TODO 业务方实现令牌有效性校验return true;}/*** 从URL中获取密文密钥参数* @param httpExchange* @return*/private String getCiphertext(HttpExchange httpExchange) {URI uri = httpExchange.getRequestURI();String queryString = uri.getQuery();String pattern = "CipherText=(\\w*)";Pattern r = Pattern.compile(pattern);Matcher m = r.matcher(queryString);if (m.find())return m.group(1);else {System.out.println("Not Found CipherText Param");return null;}}/*** 获取Token参数** @param httpExchange* @return*/private String getMtsHlsUriToken(HttpExchange httpExchange) {URI uri = httpExchange.getRequestURI();String queryString = uri.getQuery();String pattern = "MtsHlsUriToken=(\\w*)";Pattern r = Pattern.compile(pattern);Matcher m = r.matcher(queryString);if (m.find())return m.group(1);else {System.out.println("Not Found MtsHlsUriToken Param");return null;}}}/*** 服务启动** @throws IOException*/private void serviceBootStrap() throws IOException {HttpServerProvider provider = HttpServerProvider.provider();//监听端口可以自定义,能同时接受最多30个请求HttpServer httpserver = provider.createHttpServer(new InetSocketAddress(8099), 30);httpserver.createContext("/", new HlsDecryptHandler());httpserver.start();System.out.println("hls decrypt server started");}public static void main(String[] args) throws IOException {HlsDecryptServer server = new HlsDecryptServer();server.serviceBootStrap();}}
提工单升级一下aliyun-java-sdk-vod的版本,换成2.16.9就可以了
阿里云视频点播解密DecryptKMSDataKeyRequest爬坑相关推荐
- laravel中使用阿里云视频点播遇到的坑解决思路
这两天在研究laravel使用阿里云视频点播播放sdk,遇到各种坑,此处的坑好久没有解决,记录一下 laravel5.4调用阿里云视频点播播放借口报错(1/1) ClientException Ser ...
- Spring Boot集成阿里云视频点播服务的过程记录
阿里云视频点播 效果预览 视频点播 视频点播概述 功能 优势 流程 环境准备 开通视频点播 创建RAM用户并授权 上传SDK 上传流程 下载上传SDK 安装上传SDK 集成Java上传SDK 异常说明 ...
- 蚂蚁金服零号云客服遇到爬坑
蚂蚁金服零号云客服遇到爬坑 一.准备 二.代码 2.1.背景 2.2.依赖 2.3.代码 三.配置回调地址 四.测试 最近接一个sdk,也就是蚂蚁金服零号云客服的一个自定义卡片的功能 一.准备 官方文 ...
- 玩转短视频?守护视频安全?AI智能提速?一分钱体验? 阿里云视频点播大招盘点...
摘要: 前言 随着近几年在线视频市场规模不断扩大,内容不断创新,用户粘性增加,在线视频市场的商业价值不断增长,各垂直行业纷纷引入视频能力,一时之间,视频已经成为了众多移动APP和在线平台沉淀用户的有效 ...
- 阿里云视频点播服务的开通和使用
阿里云视频点播服务的开通和使用 文章目录 阿里云视频点播服务的开通和使用 前言:什么是阿里云视频点播服务? 一.开通阿里云视频点播服务 二.控制台基本操作 三.JAVA JDK操作阿里云视频点播服务 ...
- 阿里云视频点播-对接注意点
阿里云视频点播-对接注意点 对接接阿里云的视频点播过程有点繁琐,做个记录以便以后查阅 一.分发加速配置-域名管理 配置成功的前提是自己先要有个主域名,并且成功备案. 1.先配置一个域名 2.配 ...
- 阿里云视频点播大招盘点
前言 随着近几年在线视频市场规模不断扩大,内容不断创新,用户粘性增加,在线视频市场的商业价值不断增长,各垂直行业纷纷引入视频能力,一时之间,视频已经成为了众多移动APP和在线平台沉淀用户的有效方法. ...
- 阿里云视频点播技术能力盘点
随着近几年在线视频市场规模不断扩大,内容不断创新,用户粘性增加,在线视频市场的商业价值不断增长,各垂直行业纷纷引入视频能力,一时之间,视频已经成为了众多移动APP和在线平台沉淀用户的有效方法. 为了让 ...
- 阿里云视频点播vod视频无法播放预览的问题
阿里云视频点播vod视频无法播放预览的问题 本人出现的问题是阿里云的oss对象存储服务器是北京的,而开通的视频点播服务是上海的,视频就无法播放,这个视频点播的地区切换是很方便的. 踩过的坑:我看了蛮多 ...
- 玩转短视频?守护视频安全?AI智能提速?一分钱体验? 阿里云视频点播大招盘点
摘要: 前言 随着近几年在线视频市场规模不断扩大,内容不断创新,用户粘性增加,在线视频市场的商业价值不断增长,各垂直行业纷纷引入视频能力,一时之间,视频已经成为了众多移动APP和在线平台沉淀用户的有 ...
最新文章
- java正则 group_Java正则表达式,分组 group()、groupCount()
- java json发送文件_关于java:REST API设计在同一请求中将JSON数据和文件发送到api...
- R语言match函数对象之间的匹配实战
- reactnative 获取定位_react native 获取地理位置的方法示例
- DateTime时间格式转换为Unix时间戳格式
- IDEA第一个mybatis程序 mybatis增删查改操作 mybatis的map模糊查询
- 通讯录排序 (20分)_算法入门篇:简单的排序算法
- 一名合格的电子工程师,不能逃避的“梗”
- 计算机和公文写作买什么资料,公文写作和计算机应用笔试和复习大纲资料.doc...
- 网络基础2-2(传输层,端口,详谈UDP)
- 调用门、堆栈切换与调用过程返回
- 利用高阶函数map和reduce将字符串转化成浮点数
- CCF201512试题
- Spring 框架简单介绍
- 【Pytorch】Pytorch常见的坑汇总
- 关于 myeclipse 里面没有 add hibernate capabilities 问题解决方法
- python连接池 commit,连接池请求Python
- git删除远程提交记录
- vb科学计算机ppt,《计算机级VB教程》PPT课件.ppt
- 小公司个人技术成长路线思考
热门文章
- qq 客服 php,QQ支持临时会话设置
- php 鸟哥 配置文件,鸟哥:让PHP 7达到最高性能的几个Tips
- 数字传感器:新兴的应用
- 清洗outliers
- 病毒制作实践小记:运行关机、蓝屏炸弹、进程关闭、拓展名病毒
- win8计算机意外,解决win8.1/win10开机提示“致命错误c0000034”的方案
- 织梦如何添html5播放器,织梦ckplayer视频播放器插件的介绍与使用
- 大乐斗2服务器维护,腾讯《QQ宠物》、《乐斗Ⅱ》正式停止运营
- Elasticsearch系列——(1.1)倒排索引原理
- LayerPagerDemo - 双层可拖拽式布局界面