使用经典排列加密

时间:2012-05-10 00:39:31

标签: java encryption permutation

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

假设加密我的密码(尚未制作驱动程序),但不确定我是否正确使用了我的变量(加密和解密)。加密和解密变量是这样的,密码会将索引更改为用户键入的内容,也不知道,但我想在某处使用反向清除方法,但不确定在哪里?有帮助吗?需要有人告诉我,我的节目是否已关闭,或是否已接近。

1 个答案:

答案 0 :(得分:2)

警告 - 这是良好警告 - 是因为shadowing

该行:

char[] encrypt = password.toCharArray();

使[static] 成员变量 [也称为] encrypt在该方法中被遮蔽。因此&#34;置换值&#34;永远不会使用,所使用的算法将会非常突破。 (它会突然崩溃,因为&#34;排列值&#34;在加密和解密时不一样。解密算法还有另一个问题,因为它甚至使用[相同]&#34;置换值&# 34;,但这是另一件需要解决的问题。)

解决方案:

  1. 使用更好/不同的名称(比如说encryptionKey进行排列)。
  2. 明确使用Encryption.encrypt来引用[静态] 成员变量
  3. 当然,请查看算法。不需要Encryption.decrypt并保留它将允许引入其他错误。

    快乐的编码。