首页 > 解决方案 > 如何快速播放目录中保存的本地加密AES128文件?

问题描述

如何快速播放目录中保存的本地加密AES128文件?我希望这是异步和逐块完成的。我把我写的代码放在下面的块中。

我的代码的问题是,当解码新块时,玩家不会注意到并且不会继续。但是文件在目录中运行。您认为这样做的最佳做法是什么?我没有找到任何好的解释。

// 从目录中分块数据

    func chunkData(path: URL) {
        do
        {
            let data = try Data(contentsOf: path)
            let dataLen = (data as NSData).length
            let fullChunks = Int(dataLen / 10240)
            let totalChunks = fullChunks + (dataLen % 10240 != 0 ? 1 : 0)
            
            var chunks:[Data] = [Data]()
            for chunkCounter in 0..<totalChunks
            {
                var chunk:Data
                let chunkBase = chunkCounter * 10240
                var diff = 10240
                if chunkCounter == totalChunks - 1
                {
                    diff = dataLen - chunkBase
                }
                
                let range:Range<Data.Index> = chunkBase..<(chunkBase + diff)
                chunk = data.subdata(in: range)
                
                chunks.append(chunk)
            }
            print(chunks)
            dataArray = chunks
            decryptFile(data: dataArray[0])
        }
        catch
        {
        }
    }

// 用于解密文件

    static func aesDecrypt_file(data: Data) throws -> String {

        let fileData = data
        let decrypted = try AES(key: FILE_DECODE_KEY.bytes, blockMode: CTR(iv: "0000000000000000".bytes), padding: .noPadding).decrypt([UInt8](fileData))
        let base = decrypted.toBase64()
        return base ?? ""
    }

标签: swiftavplayeravkit

解决方案


推荐阅读