我们有一个在linux上运行的java应用程序。 当应用程序崩溃并重新启动时 - 我们需要恢复(持久化)存储在先前运行中的非常敏感的信息(全局静态var)。 没有数据库允许(不安全)。 同样重要的是,没有人可以不可察觉地改变这些信息(例如覆盖文件等)。
提前致谢
答案 0 :(得分:0)
我建议使用Jasypt。
你可以实施Externalizable
&加密对象流
BasicPasswordEncryptor encryptor = new BasicPasswordEncryptor();
String cipher = encryptor.encryptPassword(<<stream to encrypt as string>>);
...
if (encryptor.checkPassword(inputPassword, encryptedPassword)) {
// correct!
} else {
// bad login!
}
答案 1 :(得分:0)
保护加密所需的数据。在CBC或CTR模式下使用AES-256和PKCS7填充。 不将加密密钥存储在您的应用程序中。您可以存储IV / nonce,因为它不需要是安全的。
要确保不更改数据,请使用带有SHA-256的HMAC。您必须使用与用于AES的HMAC不同的密钥。