|
|
1
13
在我们的应用程序中,我们用DER格式存储公钥和私钥,这样它们就可以更容易地在Java之外使用和操作。在我们的例子中,私钥上没有密码。 将私钥转换成更容易在Java中使用的东西:
然后您可以通过以下方式直接获得RSA私钥:
公钥类似:
并且阅读它:
许多人储存钥匙。出于我们的目的,我们需要在多个不同语言的应用程序之间共享相同的密钥,并且不想复制磁盘上的文件。 无论是哪种情况,性能都不应该是一个很大的问题,因为您很可能将这些密钥存储在某种类型的单实例或缓存中,而不是每次都重新生成它们。 |
|
2
2
实际上,无论您是否意识到这两种情况,您都在存储字节。我想在@brian m.carr answer中暗示了正确的答案,它以最自然的形式存储更高级的对象。在公钥的情况下,明显的选择是作为pkcs 1 rsapublickey asn.1结构、der编码或作为x509 subjectpublickeyinfo asn.1结构、der编码。后者是Sun提供程序提供给您的,Sun类X509EncodedKeyspec支持它。同样,pkcs8encodedKeyspec支持私钥格式。这两种格式都是标准格式,例如由OpenSSL支持。Sun倾向于(倾向于)支持现有的标准,而不是定义它们自己的标准。 |
|
|
3
1
如果您想定义一种存储密钥的格式,那么我会选择一种可消耗的格式,这样当您想更改加密时(例如,当旧的加密变得脆弱时),它就不会中断。 因此,我将存储编码为base64的字节,以及描述格式的字符串,“rsa”可能。 |