我有一個字母數字字符串,其長度爲11,需要被模糊化,其中模糊字符串應該滿足以下條件:
- 它應該保持在11個字符的長度。
- 它應該僅由字母數字字符組成(即它可以由10位+26位小寫字母+26位大寫字母組成)。
- 應該有一種去混淆原始字符串的方法。如何混淆11個字符的字符串?
請注意,我不需要混淆我的整個代碼,只需一次一個字符串。
- 核心Java有沒有辦法做到這一點?
- 我將不勝感激任何幫助,首選的例子,鏈接到一個例子或指導這樣的代碼。
- 如果有人知道解決此類問題的第三方軟件包,請留下鏈接。
在此先感謝!
關於Zoul提出的答案/算法:我實現了一切,目前我遇到了隱藏問題;這是我做的:
我目前使用Zoul建議的
random_stri
的值。這僅用於測試目的;請注意,由於我不需要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),這給了我們ASCII值爲'1'加上114,這給我們(49 + 114) - > 163。
然後,要找到混洗字符數組中的混淆字符的索引,我執行163模數組長度並獲取該索引處的字符。
問題是這些值仍然是連續的;即對於2個連續的輸入,輸出結果也將是連續的!我在這裏錯過了什麼?提前致謝!
你用rot13嗎?混淆的目標是什麼? – 2013-03-03 07:52:51
混淆的目標是「隱藏」代表連續生成的ID的原始字符串;即如果當前字符串是'1bS0EMtBbK5',那麼下一個將是'1bS0EMtBbK6';連續的一代不在我的控制之下。什麼是rot13? – boomboom 2013-03-03 08:04:07
原始字符串中允許使用什麼字符集? – 2013-03-03 08:04:09