Encryption Java应用程序中的静态数据加密

Encryption Java应用程序中的静态数据加密,encryption,pgp,Encryption,Pgp,我有一个Java应用程序(ESB-Enterprise Service Bus),它处理客户敏感数据,并且需要支持静态数据加密,以防止数据滥用 应用程序将要处理的客户数据存储在文件系统上,应用程序通过java.io.fileAPI与其交互。所以基本上,我需要在应用程序将文件持久化到文件系统之前对其进行加密,然后在应用程序读取文件之前对其进行解密,以便对其进行解析和处理 有没有好的框架或库可以帮助我在rest中实现数据加密?我计划使用PGP加密/解密实现静态数据加密 我正在寻找在Java应用程序中

我有一个Java应用程序(ESB-Enterprise Service Bus),它处理客户敏感数据,并且需要支持静态数据加密,以防止数据滥用

应用程序将要处理的客户数据存储在文件系统上,应用程序通过
java.io.file
API与其交互。所以基本上,我需要在应用程序将文件持久化到文件系统之前对其进行加密,然后在应用程序读取文件之前对其进行解密,以便对其进行解析和处理

有没有好的框架或库可以帮助我在rest中实现数据加密?我计划使用PGP加密/解密实现静态数据加密


我正在寻找在Java应用程序中实现rest数据加密的最佳推荐方法,如有任何帮助,我将不胜感激。

您究竟为什么认为pgp是实现这一点的合适工具?在我看来,您只需要一个对称密钥解决方案,所以pgp似乎是错误的答案

Java中的密码学是一个雷区。做错事容易,做对事难

话虽如此,如果你使用而不是其他东西,你有更好的机会不把事情搞砸。它们有示例代码,向您展示如何执行各种操作

对于静态数据加密,我建议您在CBC模式或CTR模式下使用AES。如果使用CBC模式,请确保以加密安全的方式选择IV(不可预测)。此外,切勿在任何操作模式下重复使用IV

您还应该考虑是否需要消息完整性。关于对称加密的一般指南


尽管人们经常会弄错密码,但更大的问题是密钥管理。这是一个全新的蠕虫病毒罐(不要误以为pgp提供了一个解决方案:它所做的只是将问题转移到其他地方)。

你为什么使用文件而不是数据库?文件可能是一个多线程噩梦。请注意,“REST”与“at REST”并没有真正的联系。@BCartolo它是一个遗留应用程序,用于在文件系统中存储要处理的数据。此外,文件系统中持久化的数据由一个工作线程处理,因此我们没有任何多线程问题。@jonrsharpe您能澄清一下您的评论吗?客户不希望其数据以纯文本形式显示在文件系统上。因此,为了防止其滥用,客户希望我们在将数据持久化到文件系统之前对其进行加密。我们已经对传输中的数据使用SSL。“REST”->,一种API设计模式。“静止”->不移动时(例如,不通过RESTAPI传输时)。感谢您的回答。我是这方面的新手,所以欢迎任何指导。您能告诉我为什么在我的案例中建议使用AES(用于存储在文件系统中的文件的静态数据加密)?这是性能问题吗(因为它使用了对称密钥)?建议对大文件(大约500MB)使用加密方法吗?不同的加密技术是否有可用的性能指标?AES适合于此目的。如果你不知道为什么需要公钥密码,就没有理由引入公钥密码。你不需要,你真的不想要。AES有很好的性能,应该可以很好地加密大小相同的文件。谢谢!因此,PGP仅在需要公钥时使用,即文件需要由外部合作伙伴使用公钥加密?我理解,在我的情况下,没有对它的要求。此外,我听说非对称密钥加密(PGP)比对称密钥(AES)更强大。这是真的还是误解?请告知,这样做的好处是安全。当IVs是可预测的时,CBC模式上有各种各样的攻击。例如,许多针对SSL的攻击(如狮子狗)利用了可预测的IVs.Correct。IV不需要保密,它可以活在密文的开头。