我一直在尝试制作一个允许我加密用户名和密码并打印结果的程序。我可以让它工作,但我想将循环中出现的字符排序为单个字符串,以便更容易管理。有什么建议吗?
System.out.println("\nYour encrypted username is " );
for(char c : namech)
{
int temp = (int)c;
int namecode = 0;
//makes the characters w,x,y,z loops back to the start of the alphabet
if(temp<=90 & temp>=65)
{
namecode = temp+4;
if(namecode == 91)
{
namecode = 65;
}
else if(namecode == 92)
{
namecode = 66;
}
else if(namecode == 93)
{
namecode = 67;
}
else if(namecode == 94)
{
namecode = 68;
}
int i = namecode;
char d = (char)i;
System.out.print(d);
}
答案 0 :(得分:3)
我想将循环中出现的字符排序为单个字符串
最简单的方法可能是将整个事物转换为char[]
,然后将其转换回字符串:
char[] chars = namech.toCharArray();
for (int i = 0; i < chars.length(); i++) {
chars[i] = obfuscateCharacter(chars[i]);
}
String obfuscated = new String(chars);
...其中obfuscateCharacter
基本上是当前循环的主体,但是被提取到处理单个字符的方法中,这更容易测试等等(我拒绝称之为encryptCharacter
因为这给人一种安全感:)
答案 1 :(得分:1)
我会使用StringBuilder并在加密时附加每个字符。简单而有效的连接。 IE。
StringBuilder sb = new StringBuilder();
for (char c : namech)
{
// ... your code was here
sb.append(d);
}
System.out.println(sb.toString());
答案 2 :(得分:0)
String result = null;
int j = 91;
int k = 92;
result = String.valueOf((char)j);
result += String.valueOf((char)k);
顺便说一下,这看起来像是一个完美的地方,可以使用Switch语句而不是多个if,否则如果......
答案 3 :(得分:0)
万一你真的需要加密数据,你自己很难做到。一般来说,手动滚动自己的加密并不是一个好主意,而是使用更可靠的加密方案。
请参阅 https://stackoverflow.com/questions/2430412/what-java-library-should-i-use-for-cryptography 中提到的Bouncy Castle API http://www.bouncycastle.org/