Я вычисляю SHA256 файла в мобильном телефоне, и мне нужно будет сравнить его на стороне сервера, пересчитав его. В настоящее время значение, рассчитанное на мобильном телефоне, и значение, рассчитанное на сервере, не совпадают.
вот реализация на мобильной стороне:
func sha256(data: Data) -> Data {
var digestData = Data(count: Int(CC_SHA256_DIGEST_LENGTH))
_ = digestData.withUnsafeMutableBytes {digestBytes in
data.withUnsafeBytes {messageBytes in
CC_SHA256(messageBytes, CC_LONG(data.count), digestBytes)
}
}
return digestData
}
....
let localHash = sha256(data: data)
photoHash = "\(localHash.map { String(format: "%02hhx", $0) }.joined())"
и на стороне сервера мой сервлет делает следующее с полученным файлом:
FileInputStream fis = new FileInputStream(f);
String sha256 = org.apache.commons.codec.digest.DigestUtils.sha256Hex(fis);
log.debug("SHA256 "+sha256);
Я уверен, что обе стороны используют один и тот же файл, но как я могу вычислить одно и то же значение HASH?