これが私が必要とするものです(言語:C#4):
苦情を提出できる制度を構築しています。苦情が提出されると、システム内の苦情を識別する一意の9桁の番号が与えられます。
セキュリティ(隠すことによるセキュリティ)の目的で、チケットIDをシーケンシャルにしたくありません。しかし、データベースを使用してシーケンシャルIDを生成したいと思います。
したがって、必要なのは、両方の方法で高速な単射関数です。つまり、連続番号からチケットIDに、そしてチケットIDから連続番号に戻ります。
ticketId
データベース内がシーケンシャルであるように、ユーザーに表示する前に難読化します。同様に、ユーザーから番号を取得したら、難読化を解除し、データベースで苦情を検索するために使用します。
難読化の部分は、あまり複雑である必要はなく、一般の人々にとっては「十分に明白ではない」だけです。
たとえば、値のビット数を変更するだけで、次のようになります(8ビット値の場合)。
0-> 0
1-> 128
2-> 192
3-> 64
4-> 160
5-> 96等