1

我想知道是否有任何密钥存储实现允许存储密钥属性,比如名称/值对,以及对称密钥的值?看起来 JKS 和 JCEKS 只允许存储键值和键的别名,因此请寻找其他选项(如果有)。

不管如何处理名称/值对,只要它们可以被存储(实际上,由应用程序来理解它们)。

所以我想放在密钥库中的是:
alias1 - keyvalue1 - metadata1=[md1=value11 md2=value12 md3=value13 ...]
alias2 - keyvalue2 - metadata2=[md1=value21 md2=value22 md3=value23 ...]
...
不要关心元数据的编码,但它应该可以单独检索。

编辑: KeyStore.SecretKeyEntry有一个 CTOR 接受 a Setof Attributes 并使用KeyStore.setEntry一个可以传递这样的 aSecretKeyEntry包括其元数据。不幸的是,看起来默认的 JCEKS 实现只是忽略了属性。

4

1 回答 1

0

如果是应用程序的工作来理解密钥,你为什么不做下面的事情呢?

对于字符串键。

关键字:“兔子?颜色=白色&尺寸=小&蓬松=真”

或者您可以解析为 base64 并拥有

密钥:cmFiYml0P2NvbG9yPXdoaXRlJnNpemU9c21hbGwmZmx1ZmZ5PXRydWU=

我在这里看到的问题是,对于字符串,您将无法将键“兔子”与属性分离。例如,在 JKS 上,您将上面的键作为-alias cmFiYml0P2NvbG9yPXdoaXRlJnNpemU9c21hbGwmZmx1ZmZ5PXRydWU=,这将迫使您遍历所有键以找到正确的键。

于 2018-01-08T13:40:25.273 回答