2017-04-09 67 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

它只是一个占位符,用于任何你想改变角色的地方。为了清晰起见,我会编辑 –

相关问题