如何解决如何使用aws弹性代码转换器数据密钥中的springboot创建许可证获取URL端点?
使用aws弹性代码转换器对音频文件进行代码转换时,我选择了“不存储”。 我现在有 加密密钥-xxxxxxxxxxxxxxxxxx 加密密钥MD5- xxxxxxxxxxxxx 加密初始化向量-xxxxxxxxxx
所以我用awskms使用此代码解密加密密钥
public ByteBuffer decryptAes(String aes) {
Map<String,String> enccontext = new HashMap<>();
enccontext.put("service","elastictranscoder.amazonaws.com");
ByteBuffer encrypted = getBytebuffer(Base64.getDecoder().decode(aes));
DecryptRequest reqq = new DecryptRequest().withCiphertextBlob(encrypted).withEncryptionContext(enccontext);
ByteBuffer buf = awskms.decrypt(reqq).withKeyId(keyId).getPlaintext();
return buf;
}
,我有一个m3u8文件,其密钥为 #EXT-X-KEY:METHOD = AES-128,URI =“ https:// [mysite] / api / public / amazoncode”,IV = 0xdbe2882930b143e62b3e6e587a2269f8
所以我的困惑是如何将解密密钥发送到m3u8?到目前为止,我已经知道了,但是似乎不起作用
// this is the endpoint for https://[mysite]/api/public/amazoncode
@GetMapping(value = "amazoncode")
public ByteBuffer getAmazonCode(){
return amazonClient.decryptAes([the encryption code that i got from amazon]);
}
那么发送解密的字节缓冲区的合适的响应主体是什么,这样我的m3u8可以通过从端点获取解密数据密钥来开始播放?
解决方法
对于遇到同样问题的任何人,过一会儿我都知道了,我所要做的就是获取byteBuffer后,将其转换为输入流并从中创建密钥文件。并通过许可证获取URL进行下载。 这是代码:
@GetMapping(value = "amazoncode",produces = MediaType.APPLICATION_OCTET_STREAM)
public void getAmazonCode( HttpServletResponse response){
response.setHeader("Content-Disposition","attachment; filename=\"mmm.key\"");
response.setContentType("application/key");
//this will return the decrypted data key
ByteBuffer b =amazonClient.decryptAes([the encryption key]);
InputStream targetStream = new ByteArrayInputStream(b.array());
try {
IOUtils.copy(targetStream,response.getOutputStream());
}catch (Exception e){
System.out.println(e);
}
现在它就像一种魅力。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。