Неясный / шифруют номер заказа как другое число: симметричное, “случайное” появление?

Я не очень знаком ни с Boost, ни с Hana; но я зашел на их сайт и прочитал немного их документации по некоторым их объектам, функциям и т. д. Я не знаю, поможет ли это вам, но я смог немного изменить ваш код и получил его для компиляции: [115 ]

int main() {
    A a;
    auto tuple = hana::make_basic_tuple( 42, "42" );

    hana::for_each( hana::zip( hana::members(a), tuple), 
                               [&](auto&& element) {
                                   hana::at( tuple, hana::size_c<0> );
                                   hana::at( tuple, hana::size_c<1> );
                               }
                  );

}

Я изменил вашу лямбду на [&] и изменил параметр на auto&&, и я использовал hana::at(). AFAIK Я не думаю, что это что-то назначает на данный момент, но вы могли бы использовать это и перейти отсюда, но положительным моментом является то, что на том же веб-сайте вы предоставили свой демонстрационный код и с теми же настройками компилятора, это сделало скомпилировать без ошибок. Демонстрация в реальном времени

26
задан Artjom B. 2 August 2015 в 12:43
поделиться

4 ответа

Клиент потребует, чтобы распределение запутываемых последовательных номеров заказа было похоже на что-нибудь в особенности?

, Если Вы не хотите усложнять себя с шифрованием, используйте комбинацию перестановки бита с небольшим количеством случайного соления (если бы у Вас есть биты/цифры для экономии), XOR-наложенный на некоторую фиксированную постоянную (или некоторая функция чего-то, которое было бы легко доступно вместе с запутываемым ID заказа когда-либо, такой как, возможно, customer_id, кто разместил заказ?)

<час>

РЕДАКТИРОВАНИЕ

кажется, что весь клиент требует, для внешней стороны, чтобы не быть в состоянии вывести прогресс продаж. В этом случае решение для перестановки (побитовое отображение, например, исходный бит 1 карта к запутываемому биту 6, исходный бит 6 карт к запутываемому биту 3, и т.д.) должно быть более, чем достаточным. Добавьте некоторые случайные биты, если Вы действительно хотите мешать раскалываться, при условии, что Вы имеете дополнительные биты в наличии (например, предполагающий, что числа первоначального заказа идут только до 6 цифр, но Вам разрешают 8-9 в запутываемом номере заказа, тогда можно использовать 2-3 цифры для случайности прежде, чем выполнить побитовое отображение). Возможно XOR результат для дополнительного запугивания (любознательная сторона могла бы попытаться генерировать два последовательных запутываемых заказов, XOR их друг против друга для избавлений от константы XOR, и должна будет тогда вывести, какой из ненулевых битов прибывает из соли, и которые прибыли из инкремента, и получил ли он действительно два последовательных номера заказа или нет... Он должен был бы повторить это для значительного количества того, что он будет надеяться, последовательные номера заказа для взламывания его.)

<час>

EDIT2

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

5
ответ дан Tim Cooper 28 November 2019 в 07:47
поделиться

Выберите 8 или 9 чисел цифры наугад, скажите 839712541. Затем возьмите двоичное представление своего номера заказа (для этого примера, я не использую 2 дополнение), увеличьте его к тому же числу битов (30), инвертируйте его, и xor зеркально отраженный номер заказа и магическое число. Например:

1         = 000000000000000000000000000001

Flip      = 100000000000000000000000000000
839712541 = 110010000011001111111100011101
XOR       = 010010000011001111111100011101 = 302841629

2         = 000000000000000000000000000010

Flip      = 010000000000000000000000000000
839712541 = 110010000011001111111100011101
XOR       = 100010000011001111111100011101 = 571277085

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

15
ответ дан Pesto 28 November 2019 в 07:47
поделиться
6
ответ дан Brian Knoblauch 28 November 2019 в 07:47
поделиться

В 9 числах цифры первая цифра является случайным индексом между 0 и 7 (или 1-8). Поместите другую случайную цифру в то положение. Остальное - "реальный номер заказа:

  • порядок Orig: 100
  • Случайный индекс: 5
  • Случайная цифра: 4 (гарантируемый, прокрутил игру в кости:))
  • Результат: 500040100

  • Номер Orig: 101

  • Случайный индекс: 2
  • Случайный Результат цифры 6
  • : 200001061

можно решить, что 5-м (или любой другой) цифра является индекс.

Или, если можно жить с реальными номерами заказа 6 цифр, тогда можно представить "вторичный" индекс также. И можно инвертировать порядок цифр в "реальном" порядке номер

4
ответ дан Sunny Milenov 28 November 2019 в 07:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: