発端 ケース1 とあるサービスで, ユーザ ID を整数の連番で採番しており, ユーザにユーザ ID を見せる際, そのままユーザに見せてしまうと, ユーザ数が予測されてしまう. そこで, ユーザ ID を別の整数に可逆変換し, その値をユーザに見せたい. ケース2 雑誌などに, 整数のみで構成されたシリアルキーを掲載する際, ランダムでシリアルキーを生成したいが, 件数が増えると重複チェックで大量にリソースを消費する. そこで 連番の整数を別の整数に可逆変換し, その値をシリアルキーとしたい. 解決策 偉大な先人の知恵を借りる 整数を可逆スクランブルする - C Sharpens you up 数値を変換する関数を Python で実装 先人の知恵を拝借し, 全単射な変換関数を Python で実装する. def scramble(number, salt, inverse_salt):