Статистическая операция над набором данных для обнаружения изменения значения - PullRequest
1 голос
/ 07 марта 2019

У меня есть набор фиктивных данных, например, 100 баллов, которые я хотел бы сделать следующим образом:

  1. Использовать некоторую статистическую операцию
  2. использовать результат шага 1 и создатьхэш, например sha-256 или md-5

Затем я хочу изменить несколько точек данных в наборе и выполнить те же шаги, что и выше.

Указать доказать:

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

При использовании среднего значения набора будет достаточно обнаружить изменения в наборе, даже если измененные значения чрезвычайно малы?

Какую еще операцию я должен выполнить для выполнения шага 1 запроса?

Кодовая идея

import hashlib
# get Set
# Perform Step 1
h1 = hashlib.sha256()
h1.update(b'value from step1')

# change values within set
# perform Step 1
h2 = hashlib.sha256()
h2.update(b'new value from step2')

# check if h1 == h2
h1 

1 Ответ

1 голос
/ 07 марта 2019

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

Вот пример:

Допустим, ваш набор данных [1,1,1]. Теперь вы вычисляете среднее значение, равное 1. Далее вы создаете хэш 1. Теперь, как вы убедитесь, что после изменения более чем одной точки данных вы не получите [1,0, 2], [3,0,0] или любой другой набор данных, который дает среднее значение 1 и, следовательно, тот же хэш?

Стандартное отклонение, дисперсия и корреляция приводят к одной и той же ловушке.

Однако вы все еще можете быть уверены, что два набора данных с разными хэшами не совпадают. Просто не получается сказать, что два набора данных с одинаковым хешем одинаковы.

Чтобы свести к минимуму вероятность создания одного и того же хэша из двух разных наборов данных, вы можете рассчитать отпечаток Рабина вашего набора данных и сгенерировать из этого хэш. См https://en.wikipedia.org/wiki/Rabin_fingerprint

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...