我有一个Java应用程序(ESB - 企业服务总线),它处理客户敏感数据,并且需要支持静态数据加密以防止数据滥用。
应用程序将客户数据存储在文件系统上进行处理,应用程序通过java.io.File
API与之交互。所以基本上,我需要在应用程序将文件保存在文件系统之前对其进行加密,然后在应用程序读取之前对其进行解密,以便对其进行解析和处理。
是否有任何好的框架或库可以帮助我实现静态数据加密?我打算使用PGP加密/解密来实现静态数据加密。
我正在寻找在我的Java应用程序中实现静态数据加密的最佳和推荐方法,我们将不胜感激。
答案 0 :(得分:1)
为什么在地球上你会认为pgp是正确的工具吗?在我看来,你只需要一个对称的密钥解决方案,所以pgp感觉就像是错误的答案。
Java中的密码学是一个雷区。容易做错事,很难做好事。
话虽如此,如果你使用BouncyCastle而不是其他东西,你有更好的机会不搞砸。他们有示例代码,向您展示如何进行各种操作。
对于静态加密数据,我建议您在CBC模式或CTR模式下使用AES。如果使用CBC模式,请确保以加密安全方式选择IV(不可预测)。此外,永远不要在任何操作模式下重复使用IV。
您还应该考虑是否需要消息完整性。有关对称加密的一般指导here。
尽管人们经常会出现加密错误,但更大的问题是密钥管理。这是一个全新的蠕虫病毒(不要误以为pgp为此提供了解决方案:它所做的就是将问题转移到其他地方)。