Создать контрольную сумму из base64 или необработанных данных?

#php #rest #file-upload #base64 #checksum

#php #остальное #загрузка файла #base64 #контрольная сумма

Вопрос:

В моем проекте мне нужно передать изображение через API. Перед передачей я кодирую необработанные данные изображения base64 , чтобы я мог использовать их в запросе JSON. Что я хочу сделать, это добавить контрольную сумму файла в запрос, чтобы я мог проверить на своей стороне API, был ли файл успешно передан.

Мой вопрос — должен ли я вычислять контрольную сумму до или после base64?

 // Client
$checksum = md5($rawImageData);
$base64ImageData = base64_encode($rawImageData);

// API
$receivedBase64 = $_POST['base64ImageData'];
$receivedChecksum = $_POST['checksum'];
$imageData = base64_decode($receivedBase64);
$actualChecksum = md5($imageData);

if ($receivedChecksum != $actualChecksum) {
   // Image not transfered correctly.
}
  

Или я должен сначала кодировать данные base64 , затем вычислять контрольную сумму md5 и на стороне API сравнивать ее с контрольной суммой полученного base64? Или это не имеет значения, и оба решения имеют одинаковую надежность? Спасибо

Комментарии:

1. Зачем вам нужна контрольная сумма? Если вы используете HTTP через TCP / IP, в который уже встроены всевозможные контрольные суммы, то вы не получите неверных данных из-за сети.

2. Вы должны получить контрольную сумму до того, как произойдет какая-либо манипуляция с данными.. всегда. Это гарантирует, что ничто не сможет скрыть ваши результаты

3. контрольная сумма перед base64

Ответ №1:

Ну, ваш вопрос на самом деле не является вопросом REST или вопросом php…

Если бы вы собирались начать преобразование данных, чтобы затем отправить, а затем отменить эти преобразования, обычно имело бы смысл указывать контрольную сумму в самых концах.

Вам также нужно иметь в виду, что HTTP предложит вам достаточную защиту / исправление. Я был бы склонен сказать, что даже не беспокойтесь о контрольной сумме. Из описания вашего варианта использования не похоже, что вам действительно нужно добавлять контрольную сумму.