Установка
У меня есть таблица значений, для которой мне нужно вычислить соленый хэш за каждый стол-клетка стоимость. Кроме того, мне нужно, чтобы соль для каждой ячейки таблицы была уникальный и непредсказуемый. (Чем мотивируется эта потребность, я могу объяснить позже, а пока не хочу отвлекаться от постановки задачи.)
Теперь я не хочу добавлять дополнительный столбец к существующему столбцу в таблице только для хранения этой уникальной соли для каждой ячейки. Итак, простая стратегия, которую я имею в виду, состоит в том, чтобы сначала сгенерировать секретную, безопасную случайную 32-байтовую последовательность для всей таблицы, назовите ее Р_32, а затем для любой заданной ячейки вычислить ее соль как SHA-256 Р_32 объединены с координатами строки/столбца ячейки. В псевдокоде это выглядит так
tableSalt (строка, столбец) = SHA_256 (R_32 + строка + столбец)
куда +
здесь подразумевается конкатенация строк байтов, а не сложение. (Координаты строки/столбца представлены в виде 8-байтовых значений каждое.)
Вопрос
В моем приложении важно, чтобы секретный начальный хэш Р_32 выше, не может быть реконструирован, независимо от того, сколько различных клеточных солей из одной и той же таблицы известно. Это столовая соль
описанная выше процедура безопасна в этом отношении?