如何将GeneratedKey添加到config.properties文件?

前端之家收集整理的这篇文章主要介绍了如何将GeneratedKey添加到config.properties文件?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在尝试加密&解密密码和这些生成密钥到目前为止都很好.现在我需要将此密钥存储在属性文件中,但是当我添加密钥时,它看起来像这样:

#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”);

猜你在找的Java相关文章