2017-04-09 160 views
1

試圖使用字符串,循環和字符做一個簡單的加密。需要知道如何通過在句子中循環來替換字符串中的大寫字母,並用鍵替換字符。使用循環和密鑰進行Java加密?

String capitalize = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; 
String lower = "abcdefghijklmnopqrstuvwxyz"; 
String num = "1234567890"; 
String user = "Hello World 123 (456)."; 

String encrypt = ""; 
for (int x = 0; x < user.length(); x++) 
{ 
    char c = user(x); 
    if (Character.isUpperCase(c)) 
    { 
     Replace the upper case letters here. 
    } 

//之下,如果只是需要在第一部分幫助更多的代碼來得到的東西去

+2

你可能想看看其他的問題,我剛纔已經回答:http://stackoverflow.com/questions/43310535/adding-to-ascii-code-during-for回憶......除此之外:請記住,這種轉變只有在「學習如何處理這些事情」方面纔有效。我希望你明白,基於這種簡單方案構建的任何東西都不能稱爲**加密**。 – GhostCat

+0

[「Schneier法則」](https://www.schneier.com/blog/archives/2011/04/schneiers_law.html):任何人,從最無知的業餘愛好者到最好的密碼學家,都可以自己創建一個算法不能打破。 – zaph

回答

1

字符串是在Java中不變的,所以你需要任何字符串user轉換爲字符數組user.toCharArray(),然後使用數組語法對字符執行操作並將其轉換回字符串,或者創建一個新的字符串並在循環第一個字符時向其追加字符。對於後者,您可以使用StringBuilder或concat運算符+(它也只是使用StringBuilder)。

StringBuilder builder = new StringBuilder(); 

for (char c : user.toCharArray()) { 
    if (Character.isUpperCase(c)){ 
    builder.append(NEW_CHAR); //NEW_CHAR = char you want to replace c with 
    } 
    else { 
    builder.append(c) 
    } 
} 
return builder.toString(); 

char[] userArr = user.toCharArray(); 
for (int i = 0; i < userArr.length; ++i) { 
if(Character.isUpperCase(user[i]) { 
    user[i] = NEW_CHAR; //NEW_CHAR = char you want to replace user[i] with 
} 
} 
return String.valueOf(userArr); 
+0

NEW_CHAR來自 –

+0

它只是一個佔位符,用於任何你想改變角色的地方。爲了清晰起見,我會編輯 –