复制字节数组

时间:2013-08-29 16:10:57

标签: java arrays cryptography copy byte

我正在尝试AES加密。但是,我从以下代码中得到了一个错误:

private static byte[] readKey(String request) throws KeyFileNotFoundException,
 UnsupportedEncodingException, UnknownKeyException {

    File keyFile = new File(Logging.getCurrentDir() + "\\cikey.key");
    Properties keys = new Properties();
    byte[] storage;

    if (!keyFile.exists())
        throw new KeyFileNotFoundException("Key file not located.");

    if (keys.containsKey(request) == false)
        throw new UnknownKeyException("Key not found."); //I RECIEVE THIS ERROR

    storage = keys.getProperty(request).getBytes(); //read the STRING value and turn into a byte array

    return storage;
}

这是调用readKey()的方法的代码。我也遇到问题将<{1}}方法读入的字节数组复制readKey()方法。请阅读方法中的注释以获得更详细的解释。

decrypt()

解决此问题的任何想法?

3 个答案:

答案 0 :(得分:3)

您需要使用System.arrayCopy()复制数组。

修改

另一种选择是使用Arrays.copyOf(),尽管它只是在引擎盖下使用System.arrayCopy()

答案 1 :(得分:2)

您没有使用文件中的值初始化Property,因此键为空,当您调用keys.contains(“”)时,它返回false,您已写入 InputStream stream = new FileInputStream(keyFile);  keys.load(流);

属性键= new Property(); 在readKey()方法然后你会得到 一个字节数组,如果你试图找到一个 有效密钥。

答案 2 :(得分:2)

在检查密钥之前,您必须使用Properties.load方法之一加载keys变量。

此外,您可以使用System.arraycopy,克隆方法或Arrays.copyOfRange

克隆数组