1
public class Encryption {
private static final int[] encrypt = {2, 9, 3, 4, 6, 8, 1, 0};
private static final int[] decrypt = new int[8];
private static final int minLength = 10;

String encrypt (String password)    {
    if(password.length()<minLength) {
        return password;
    }   else {
        char[] encrypt = password.toCharArray();

        for (int i = 0; i < encrypt.length; i++)    {
            encrypt[i] = (char) (encrypt[i]);
        }
        return String.valueOf(encrypt);
    }
}

String decrypt (String password)    {
    if (password.length()<minLength)    {
        return password;
    }   else {
        char[] decrypt = password.toCharArray();
        for (int i = 0; i < decrypt.length; i++) {
            decrypt[i] = (char) (decrypt[i]);
        }
        return String.valueOf(decrypt);
    }
}

boolean isValidLength (String password) {
    if (password.length()<minLength)    {
        return true;

    }   else    {
        return false;
    }
}

int getMinLength(){
    return minLength;
    }
 }

假设要加密我的密码(尚未制作驱动程序),但不确定我是否正确使用了我的变量(加密和解密)。Encrypt 和 Decrypt 变量使密码将索引更改为用户输入的任何内容,并且也不知道,但我假设在某处使用逆转换方法,但不确定在哪里?有什么帮助吗?需要有人告诉我我的程序是否已经结束或接近。

4

1 回答 1

2

警告 - 这是一个很好的警告- 是因为阴影

该行:

char[] encrypt = password.toCharArray();

导致[静态]成员变量[也被调用]encrypt在该方法中被隐藏。因此,从未使用过“排列值”,并且使用的算法将严重破坏。(它会非常糟糕,因为“排列值”在加密和解密时并不相同。解密算法还有另一个问题,因为它甚至不使用[相同的]“排列值”,但这是另一回事.)

解决方案:

  1. 使用更好/不同encryptionKey的名称(例如排列)。
  2. 显式用于Encryption.encrypt引用 [static]成员变量

当然,还要查看算法。不需要Encryption.decrypt并将其保留在那里将允许引入其他错误。

快乐编码。

于 2012-05-10T00:59:55.043 回答