Swift MD5 отличается от одного файла

Я создаю MD5 контрольная сумма на видеофайлах перед загрузкой на сервер. Я сталкиваюсь с случаем, когда, когда я загружаю один и тот же файл, другой MD5 контрольная сумма генерируется.

Я использую следующий код для генерации контрольной суммы

static func md5File(url: URL) -> String? {

    let bufferSize = 1024 * 1024

    do {
        // Open file for reading:
        let file = try FileHandle(forReadingFrom: url)
        defer {
            file.closeFile()
        }

        // Create and initialize MD5 context:
        var context = CC_MD5_CTX()
        CC_MD5_Init(&context)

        // Read up to `bufferSize` bytes, until EOF is reached, and update MD5 context:
        while case let data = file.readData(ofLength: bufferSize), data.count > 0 {
            data.withUnsafeBytes {
                _ = CC_MD5_Update(&context, $0, CC_LONG(data.count))
            }
        }

        // Compute the MD5 digest:
        var digest = Data(count: Int(CC_MD5_DIGEST_LENGTH))
        digest.withUnsafeMutableBytes {
            _ = CC_MD5_Final($0, &context)
        }
        let stringDigest = digest.map { String(format: "%02hhx", $0) }.joined()
        return stringDigest


    } catch {
        return nil
    }
}

Я замечаю, что iOS сжимает после выбора видеофайла, затем мне дают URL в tmp/ каталог. Файл каждый раз имеет одинаковый размер, но другое имя файла. Это мое понимание MD5 не рассчитывается на основе имени файла. Я прав с этим? Что может быть причиной другого MD5 каждый раз?

0 ответов

Другие вопросы по тегам