如何使用来自 aws elastic-transcoder 数据密钥的 springboot 创建许可证获取 URL 端点?
how do I create a license acquisition URL endpoint using springboot from an aws elastic-transcoder data key?
我在使用 aws elastic 转码器转码我的音频文件时选择了“不存储”。
我现在有
加密密钥 - 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);
}
现在它就像一个魅力。
我在使用 aws elastic 转码器转码我的音频文件时选择了“不存储”。 我现在有 加密密钥 - 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);
}
现在它就像一个魅力。