0

我一直在尝试制作一个允许我加密用户名和密码并打印结果的程序。我可以让它工作,但我想将循环中出现的字符排序为一个字符串,以便于管理。有什么建议吗?

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);



        }
4

4 回答 4

3

我想将循环中出现的字符排序为单个字符串

最简单的方法可能是将整个东西变成 a char[],然后将其转换回字符串:

char[] chars = namech.toCharArray();
for (int i = 0; i < chars.length(); i++) {
    chars[i] = obfuscateCharacter(chars[i]);
}
String obfuscated = new String(chars);

... whereobfuscateCharacter基本上是您当前循环的主体,但提取到处理单个字符的方法中,这更容易测试等。(我拒绝称它为encryptCharacter安全的印象:)

于 2013-04-23T19:19:26.713 回答
1

我会使用 StringBuilder 并在加密时附加每个字符。简单高效的串联。IE。

StringBuilder sb = new StringBuilder();

for (char c : namech)
{
    // ... your code was here
    sb.append(d);
}

System.out.println(sb.toString());
于 2013-04-23T19:19:14.420 回答
0
String result = null;
int j = 91;
int k = 92;

result = String.valueOf((char)j);
result += String.valueOf((char)k);

Btw this looks like a perfect place to make use of a Switch statement instead of multiple if, else if....

于 2013-04-23T19:29:49.667 回答
0

万一你真的需要加密数据,你自己很难做到。一般来说,手动进行自己的加密并不是一个好主意,而是使用更受信任的加密方案。

请参阅https://stackoverflow.com/questions/2430412/what-java-library-should-i-use-for-cryptography http://www.bouncycastle.org/中提到的 Bouncy Castle API

于 2013-04-23T20:30:09.517 回答