我正在尝试加密&解密密码和这些生成密钥到目前为止都很好.现在我需要将此密钥存储在属性文件中,但是当我添加密钥时,它看起来像这样:
#Tue Nov 01 08:22:52 EET 2016
KEY=\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000
所以我怀疑我的代码可能有问题?!?!
并且我的代码中有一部分=
private byte[] key = new byte[16];
public void addProperties(String x,String z) {
Properties properties = new Properties();
String propertiesFileName = "config.properties";
try {
OutputStream out = new FileOutputStream(propertiesFileName);
properties.setProperty(x,z);
properties.store(out,null);
} catch (IOException e) {
e.printStackTrace();
}
}
public void generateKey() {
KeyGenerator keygen;
SecretKey secretKey;
byte[] keybyte = new byte[64];
try {
keygen = KeyGenerator.getInstance("AES");
keygen.init(128);
secretKey = keygen.generateKey();
keybyte = secretKey.getEncoded();
key = keybyte;
//THIS METHOD ADDING PROP TO PROPERTIES FILE
addProperties("KEY",new String(key));
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
}
谢谢你的帮助.所有答案都可以接受.
最佳答案
KeyGenerator#generateKey()的返回类型为
SecretKey
,来自javadocs
Keys that implement this interface return the string RAW as their
encoding format (see getFormat),and return the raw key bytes as the
result of a getEncoded method call. (The getFormat and getEncoded
methods are inherited from the java.security.Key parent interface.)
So you need to convert them and there is already asked question on this
String encodedKey = Base64.getEncoder().encodeToString(secretKey.getEncoded());
SecretKey originalKey = new SecretKeySpec(decodingKey,decodingKey.length,“AES”);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。