将公钥交换为序列化对象

时间:2011-05-09 09:53:32

标签: java cryptography public-key public-key-encryption

如何将公钥交换到客户端。我使用私钥使用RSA算法加密文档(文本文件),然后使用序列化将公钥存储为文件中的java.security.Key对象。我想了解序列化公钥对象的完整性这是安全的选择或任何其他选择。

2 个答案:

答案 0 :(得分:2)

公钥通常只是作为一段文字交换。然后将其导入密钥库。确切的做法取决于实现(我一直使用PGP)。

我不会将密钥暴露为java.security.Key的序列化形式,因为它不是真正的标准。简单形式的关键是标准的交换形式。

在将密钥暴露为下载时:它是公开的,因此下载密钥时入侵者无法做到这一点。唯一可能出错的是,有人可能伪造您的服务器并托管不同的密钥。然后使用该密钥的私钥进行签名并声称是您。当然,如果你把它邮寄给某人,你可能会遇到同样的问题。但至少你会知道你把它寄给了谁。

最安全的方法是将密钥传播出界。就像在usb棒上一样。

根据您的原因,我认为您可以忍受风险。

答案 1 :(得分:0)

Joeri已就安全方面做出回应 - 我对此没有任何补充。

您可能遇到的主要问题是库版本之间的序列化表示更改,这是任何使用Java序列化的潜在问题。

当然还有其他方法可以做到这一点。 RSA公钥应具有行业标准编码,您可以使用getEncoded()方法访问该编码。这为您提供了一个字节数组,您可以writeFileOutputStream。所以这很容易。