对于Keyczar,混合加密api是在 SessionCrypter 。
关于它的更多信息 C#版本文档 并且应该在大多数情况下适用于java。
Keyczar会将所有密钥存储在磁盘上的密钥集中,该密钥集默认允许密钥轮换。但我已经看到它被修改为从jar资源加载密钥。
我会按顺序回答你的问题:
存储钥匙的地方取决于您。也许你永远不想更新它。在这种情况下,您可以将其存储为资源甚至“硬编码”。在这种情况下,您必须为应用程序创建更新以进行更新。公钥是公开的,因此无需保密。另一方面,您可能想要添加一些代码来检查您的 信托商店 没有改变。您也可以使用像JKS这样的Java密钥库,但在这种情况下,您需要创建证书链。只是将它们发送到应用程序并不是一个好主意;你需要一条安全的道路来避免中间人攻击。
使用RSA的非对称加密肯定在PKCS#1标准中定义(在Sun提供商中实现,使用 Cipher 在Java中。定义了两种方案,PKCS#1 v1.5方案和OAEP。后者更安全。
Cipher