XOR показывает одно и то же значение после 17 символов в python
Я пытаюсь зашифровать целое число для скрытия первичных ключей в URL Django. После исследования я обнаружил, что шифрование "int" может быть выполнено с помощью XOR! Поэтому я решил попробовать эти
например:
id = 1
masked_id = id ^ 0xABCDEFAB
unmasked_id = masked_id ^ 0xABCDEFAB
print(masked_id) # 2882400170
print(unmasked_id) # 1
Вышеописанное работает хорошо, пока количество символов id не достигнет 10. Например, проверьте ниже
Выход:
When id character count is greater than 10,
id = 11111111111
masked_id = 1032582764
unmasked_id = 2521176519
Странно, что вывод не соответствует ожидаемому, когда он пересекает 10 счетчиков. Как это работает и как это исправить? Есть ли способ зашифровать int (pk) в базе данных?
когда символов больше 17, на выходе получается то же количество символов вместе с шифром, прикрепленным в последнюю очередь:
Пример:
id = 111111111111111111
masked_id = 111111109690105452
unmasked_id = 111111111111111111
Другой пример:
id = 222222222222222222222
masked_id = 222222222223987772453
unmasked_id = 222222222222222222222
Очевидно, что если я изменю все на 2, то смогу получить значение ! Это происходит, когда счетчик больше 17