我正在尝试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()
解决此问题的任何想法?
答案 0 :(得分:3)
答案 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