Представьте себе значение, например '1234'. Я хочу сопоставить это значение с другим значением, например «abcd». В сдерживает:Сопоставление значения с другим значением и обратно
- Длина целевого значения равно начальному значению
- отображение должно быть уникальным. Например. 1234 должен отображаться только на abcd и viseversa
- Процесс сопоставления должен быть (очень) трудно угадать. Например. умножения на 2 не рассчитывать
- отображение должно быть обратимым
- Начальное значение представляет собой целое число
- Целевое значение может быть любого типа
Это должно быть основной алгоритм, в конце концов я буду напишите его в Ruby, но это не имеет никакого отношения.
Я думал, по следующим направлениям:
SECRET = 1234
def to(int)
SECRET + int * 2
end
def fro(int)
(int - SECRET)/2
end
Очевидно, что это нарушает Сдерживает 1 и 3.
Конечная цель заключается в анонимную записи в моей базе данных. Я мог бы подумать об этом.
Короткий вопрос: как вы обеспечите 1, если вы хотите обеспечить 6 одновременно? – Joey
Это вас беспокоит, если кто-то еще взломал какой алгоритм? Простое хеширование (как вы полагаете) легко нарушает и компрометирует анонимность данных. В зависимости от ваших потребностей я бы предложил вам взглянуть на хеши в одном направлении. – dirkgently
Да, это беспокоит меня, если кто-то взломает алгоритм. Совсем немного. И я знаю, что мое решение неприемлемо, вот почему я спросил. И я не думаю, что конфликт 1 и 6. Пункт 1 просто создает ограничение. Пункт 6 можно отбросить. С типом я имею в виду целое число, char и т. Д. – harm