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

Вернуться на верх