- 私は、12桁の文字列または数字のみを含む19桁の顧客IDのいずれかである元の文字列を持っています。どちらの場合もユニークです。
- 質問のために、12桁の文字列を扱っていると仮定します。解決策を提案する場合は、19桁の場合にも当てはまる必要があります。
- クライアントは、長さが11文字である必要がある2番目の一意の文字列を作成することを望んでいます(元の文字列が12桁の文字列か19桁の文字列か)。この一意の文字列/IDには英数字を含める必要があります。「alpha」は、すべての文字をその一部にすることができることを意味します。つまり、「参加する」文字が数字のみ+「a」から「e」までの小文字であるソリューションでは、すべての小文字と大文字を使用する場合よりも選択肢が少なくなるため、十分ではありません。
- 暗号化は必要ありませんが、UNIQUE機能が必要であることに注意してください。
- 例または例へのリンクがあれば、助けていただければ幸いです。
- そのようなケースに対処するサードパーティのパッケージを誰かが知っている場合は、そのリンクを残してください。前もって感謝します!
2143 次
2 に答える
1
あなたが試すことができる1つの方法。
12 桁から 2 進数へのプレゼンテーションを行います。これは 5 バイトで表現できるはずです。base64 を使用してエンコードすると、9 文字の英数字で表現できるはずです。(わかりました... base64には、英数字以外の文字がいくつか含まれていました... :P )
(5 バイト表現にするのが難しい場合は、12 桁を 4 桁の 3 つのグループに分割し、それぞれを 2 バイトで表すこともできます)
base64 を検索して理解してから、同様の方法で独自のエンコード方法を実装できます。
いくつかのコードを追加する: (テストされていません。次のように見えるアイデアを教えてください)
String originalId= "123456789012";
String resultString = new String(Base64.encodeBase64(new BigInteger(originalId).toByteArray());
于 2013-02-28T07:51:17.430 に答える