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
каждый раз?