質問: ユーザーが他のユーザーのIDを推測しにくいように、システム内部で使っている数値のIDを固定長文字列に変換して画面側に送りたいのですが、適した暗号化方式はありすでしょうか? イメージ 00001 ←→ AAAAB 00002 ←→ AAAAC 00003 ←→ AAAAD 00004 ←→ AAAAE ※これだと単純すぎますが、コスト優先で暗号化、複合化したいです。
回答: ID カラムに対して UUID を生成して保存しておき、それをユーザーに対しては表示するのが一般的な回答になるかと思います。 それはそうと、どうしても ID を一意に暗号化してユーザーに共有しなければならない場合、 AES256 あたりの、共通鍵暗号化を用いて暗号化/復号化するとして、ユーザーには暗号化結果を hexdump したものを送るようにすれば、ひとまずはそれっぽくはなりそうだな、とは思います。(対象の ID のレンジが 128bit 以下ならば、暗号化結果は32文字の[0-9a-f]の文字列ができあがります)