如何将 GeneratedKey 添加到 config.properties 文件?
How to add GeneratedKey to config.properties file?
到目前为止,我正在尝试加密和解密密码并为这些生成密钥 good.Now 我需要将此密钥存储在属性文件中,但是当我添加密钥时,它看起来像这样:
#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();
}
}
感谢 help.All 可接受的回答。
KeyGenerator#generateKey()
具有 return 类型的 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(decodedKey, 0, decodedKey.length, "AES");
到目前为止,我正在尝试加密和解密密码并为这些生成密钥 good.Now 我需要将此密钥存储在属性文件中,但是当我添加密钥时,它看起来像这样:
#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();
}
}
感谢 help.All 可接受的回答。
KeyGenerator#generateKey()
具有 return 类型的 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(decodedKey, 0, decodedKey.length, "AES");