Как я могу запутать / де-запутать целочисленные свойства? - PullRequest
1 голос
/ 24 февраля 2011

В некоторых случаях мои пользователи смогут просматривать веб-версию таблицы базы данных, в которой хранятся введенные ими данные.По разным причинам мне нужно включить все сохраненные данные, в том числе количество целочисленных флагов для каждой записи, которая инкапсулирует смежность и т. Д. В данных (это для скорости и удобства во время выполнения).Но вместо того, чтобы выставлять их один на один в веб-просмотре, я хотел бы иметь запутанное поле, которое просто называется «зарезервировано» и содержит одну непонятную строку, представляющую те флаги, которые я могу легко кодировать и декодировать.

Как я могу сделать это эффективно в C ++ / Objective C?

Спасибо!

Ответы [ 5 ]

2 голосов
/ 24 февраля 2011

Обязательно ли, чтобы это поле было доступно пользователю визуально или просто чтобы оно без потерь фиксировалось в HTML-контенте веб-просмотра?Если возможно, можете ли вы включить флаги в качестве скрытого элемента ввода в каждую строку, например, <input type=“hidden” …?

1 голос
/ 24 февраля 2011

Почему бы не преобразовать каждое из полей в шестнадцатеричное, добавить их в виде строки и сохранить это значение?

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

0 голосов
/ 24 февраля 2011

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

0 голосов
/ 24 февраля 2011

Умножьте целое число вашего флага на 7, добавьте 3 и конвертируйте в base-36.Чтобы проверить, изменилась ли полученная строка, вернитесь обратно в base-2 и проверьте, равен ли результат по модулю 7 3. Если это так, разделите на 7, чтобы получить флаги.обратите внимание, что это может быть повторено - пользователи могут скопировать любую допустимую строку в.

0 голосов
/ 24 февраля 2011

Используйте симметричное шифрование ( пример ) для кодирования и декодирования значений.Конечно, только вы должны знать о ключе.
В качестве альтернативы, Ассиметричный RSA является более мощным шифрованием, но менее эффективным и более сложным в использовании.

Примечание: я любопытныйо "различных причинах", которые требуют этого дизайна ...

...