2

我想创建一个应用程序,使用服务器的公钥加密服务器的消息。我想使用 KeyCzar,但如果你有更好或其他好的想法,我会很高兴听到。

我的问题:

  1. 应用程序必须保存公钥。我应该把它存放在哪里?
  2. 如何使用此公钥加密消息?我没有找到非对称加密功能。(应用程序会加密对称密钥,数据会被对称密钥加密)

顺便说一句,我必须使用公钥,因为来自同一发件人的消息不应该被收件人链接。

对这种混合加密的参考和示例,甚至只是使用公钥加密方案(使用 KeyCzar 或其他推荐的工具),将不胜感激。

4

2 回答 2

2

我将按顺序回答您的问题:

  1. 存储密钥的位置取决于您。也许你永远不想更新它。在这种情况下,您可以将其存储为资源甚至“硬编码”。在这种情况下,您必须为您的应用程序创建一个更新来更新它。公钥是公开的,所以没有必要保证它们的安全。另一方面,您可能需要添加一些代码来检查您的信任存储是否未更改。您也可以使用 JKS 之类的 Java 密钥库,但在这种情况下,您需要创建证书链。只是将它们发送到应用程序不是一个好主意。您需要一条安全路径来避免中间人攻击。

  2. 使用 RSA 的非对称加密当然是在 PKCS#1 标准中定义的(在 Sun 提供程序中实现,Cipher在 Java 中使用。定义了两种方案,PKCS#1 v1.5 方案和 OAEP。后者更安全。

于 2013-11-17T12:03:15.353 回答
1

对于 Keyczar,混合加密 API 位于SessionCrypter中。

在C# 版本文档中有更多关于它的信息,并且大部分应该适用于 java。

Keyczar 会将它的所有密钥存储在磁盘上的密钥集中,该密钥集默认允许密钥轮换。但是我已经看到它被修改为从 jar 资源中加载密钥。

于 2013-11-18T15:48:34.613 回答