Android 钥匙工具';s-storepass与-keypass——为什么是两个密码?

Android 钥匙工具';s-storepass与-keypass——为什么是两个密码?,android,security,keytool,Android,Security,Keytool,我知道-keypass选项用于“密钥密码”,而-storepass选项用于“密钥库密码” 然而,我不明白为什么需要两个密码 需要两个密码的场景有哪些:一个用于存储(在我的例子中是文件),另一个用于密钥。这是由于Java如何处理密钥存储,因此它不是Android特有的问题。但原因是,访问存储(如添加/查看信任关系)与创建和签名密钥/证书是一项单独的任务 简言之,您可以信任某人查看/更新您的密钥库,但不使用存储在密钥库中的密钥进行签名。另外,密钥可以存储在多个密钥存储库中,您需要单独锁定密钥 Key

我知道
-keypass
选项用于“密钥密码”,而
-storepass
选项用于“密钥库密码”

然而,我不明白为什么需要两个密码


需要两个密码的场景有哪些:一个用于存储(在我的例子中是文件),另一个用于密钥。

这是由于Java如何处理密钥存储,因此它不是Android特有的问题。但原因是,访问存储(如添加/查看信任关系)与创建和签名密钥/证书是一项单独的任务


简言之,您可以信任某人查看/更新您的密钥库,但不使用存储在密钥库中的密钥进行签名。另外,密钥可以存储在多个密钥存储库中,您需要单独锁定密钥

Keytool将storepass和keypass用于不同的用途

storepass用于访问密钥存储

keypass用于访问特定密钥对的私钥


但是,不应在命令行或脚本中指定密码,除非是出于测试目的,或者您使用的是安全系统。

谢谢。起初,我认为2个密码的特性对团队来说非常有用,但对单人开发“团队”来说并没有什么区别。然后我读了你答案中的最后一句话,意识到它对单个开发人员也很有用。谢谢++(不久将接受)。您的
storepass
密码用于验证密钥库/信任库的完整性。您的
keypass
密码实际上是用来解密私钥或密钥的。是的,您仍然可以在不输入任何密码的情况下“查看”公共证书,但……您将无法验证其完整性。那么重点是什么呢?另一种理解它的方式类似于
storepass
类似于“keystore/truststore”MAC(消息身份验证)的隐藏对称密钥,而
keypass
类似于实际的解密密钥本身。因此,后者实际上保护了存储在其中的私钥。