難読化された文字列が次の条件に対処する必要がある場合、長さが 11 の英数字文字列を難読化する必要があります。
- 11 文字の長さのままにする必要があります。
- 英数字のみで構成する必要があります (つまり、10 桁 + 小文字 26 文字 + 大文字 26 文字で構成できます)。
- 元の文字列への難読化を解除する方法が必要です。
コード全体を難読化する必要はなく、一度に 1 つの文字列だけを難読化する必要があることに注意してください。
- コア Java でそれを行う方法はありますか?
-例、例へのリンク、またはそのようなコードのガイドラインへのリンクを希望する助けをいただければ幸いです。
- 誰かがそのようなケースに対処するサード パーティのパッケージを知っている場合は、そのリンクを残してください。
前もって感謝します!
Zoul が提案した回答/アルゴリズムについて: 私はすべてを実装しましたが、現在、隠蔽の問題に問題があります。これは私がしたことです:
私は現在、
random_stri
Zoul によって提案された値を使用しました。これはテスト用です。13は必要ないので、11の長さにしたことに注意してください.上記の結果として、使用した ASCII 配列値を使用しましたが、これも 11: に切り捨てられます
[114, 97, 110, 100, 111, 109, 95, 115, 116, 114, 105]
。利用可能な 62 文字すべての配列を準備してシャッフルすると、次のシャッフルされた文字配列が得られました。
[h、P、y、8、o、n、5、V、X、R、2、g、Q、p、Z、E、s、x、b、Y、m、v、u、c、j 、 9、 w、4、I、l、z、B、U、K、S、f、7、1、0、i、k、M、q、e、r、F、3、C、J、W、O、 t、 d、N、T、A、G、6、a、D、H、L]
このシャッフルされた配列はハードコードされており、今後はすべてのプログラム実行に対して一定です。
11 文字の入力文字列をループし、各文字について、次のようにシャッフルされた配列から難読化された文字のインデックスを見つけます: 現在の文字 + ASCII_ARRAY[現在の文字インデックス]。たとえば、入力が「1bS0EMtBbK7」の場合、最初の文字が「1」の場合、(1 + 114) を実行すると、「1」に 114 を加えた ASCII 値が得られ、(49 + 114) が得られます。 --> 163.
次に、シャッフルされた chars 配列で難読化された char のインデックスを見つけるために、163 modulo array length を実行し、このインデックスで char を取得します。
問題は、値がまだ連続していることです。つまり、2 つの連続する入力の場合、出力結果も連続します。ここで何が欠けていますか?前もって感謝します!