我希望能够将 DES SecretKey 保存到文件中,以便您以后可以导入和使用它。看了几条路线,都觉得有点啰嗦,难道就没有简洁简单的方法吗?
3 回答
javax.crypto.SecretKey extends java.security.Key
java.security.Key extends java.io.Serializable
因此,如果您信任存储密钥的文件系统,您可以使用 写出密钥java.io.ObjectOutputStream
并在 using 中读取它java.io.ObjectInputStream
。
ObjectOutputStream oout = new ObjectOutputStream(outputStream);
try {
oout.writeObject(myKey);
} finally {
oout.close();
}
并且输入看起来相似
Key key;
ObjectInputStream oin = new ObjectInputStream(inputStream);
try {
key = (Key) oin.readObject();
} finally {
oin.close();
}
要生成密钥,您需要一个KeyFactory
或SecretKeyFactory
SecretKeyFactory factory = SecretKeyFactory.getInstance(algorithm);
然后生成一个秘密
factory.generateSecret(keySpec);
给定一个适合算法的关键规范。有关算法特定实现的指针,请参见KeySpec
javadoc 。KeySpec
对于 DES,看看DESKeySpec
你可能想要更现代的 .
不清楚一些事情:您认为“冗长”,您如何生成密钥,以及您拥有的密钥格式。如果您没有密钥,您可以使用 keytool (一个实用程序附带jdk) 生成它并将其放入一个称为密钥库的文件中。您还可以使用 KeyGenerator 类和 KeyStore 类以编程方式执行相同的操作(两者都有很好的文档,并且KeyStore javadoc有一个示例,它完全符合您的要求。)
如果这很冗长,您可以生成密钥并将其作为明文放入文本文件中。然后您可以使用 BufferedReader 访问它。这不太安全,因为任何有权访问此文件的人都会知道您的密钥,但这更容易一些。