之前使用C语言实现了一次,见M3U8数据流ts的AES-128解密并合并。
学习了Go语言后,又用Go重新实现了一遍。源码如下,无第三方库依赖。
package main
import (
"crypto/aes"
"crypto/cipher"
"encoding/binary"
"fmt"
"io"
"os"
"strconv"
)
func decodeAES128CBC(key []byte, index int, inFile string, out io.Writer) error {
block, err := aes.NewCipher(key)
if err != nil {
return err
}
inBuf, err := os.ReadFile(inFile)
if err != nil || len(inBuf) == 0 {
return err
}
var iv [16]byte
binary.BigEndian.PutUint32(iv[12: