文字、数字、特殊文字(メールアドレス)で構成される一意の可変長文字列のリストがあります。リスト内の各メールアドレスは一意です。
文字列をソルトでハッシュして12桁の数値を生成する、一方向のハッシュ関数(生成された数値から元の値を取得できる必要はありません)が必要です。
一意性を確保したいので、以前に生成された値のリストをチェックして衝突を検出し、衝突が発生した場合は新しい番号を生成します。予測可能性は問題ではありません。
理想的には、この関数をGroovyで記述したいのですが、Javaでも問題ありません。