如何获取 Azure Key Vault 现有密钥的密钥大小?

问题描述 投票:0回答:1

我使用 Java SDK 以编程方式在 azure key Vault 中创建了一个密钥。

Response<KeyVaultKey> createKeyResponse = keyClient.createRsaKeyWithResponse(new CreateRsaKeyOptions(id)
                        .setKeySize(keySize), Context.NONE);

稍后我想使用下面的代码获取关键详细信息。

KeyVaultKeyIdentifier identifier = new KeyVaultKeyIdentifier(keyId);
KeyVaultKey key = keyClient.getKey(identifier.getName(),identifier.getVersion());

KeyVaultKey 中似乎不包含密钥大小。它具有 expiresOn 、 CreatedOn 、算法、操作等属性,但没有大小。

那么,是否有某种方法可以获取特定 azure 密钥名称、版本对的密钥大小。 预先感谢。

java spring-boot azure azure-keyvault
1个回答
0
投票

使用以下代码获取密钥的 RSA KeySize:

byte[] n = key.getKey().getN();
int keySize = new BigInteger(1, n).bitLength();

我使用下面的代码从 Azure Key Vault 检索密钥的 RSA 密钥大小。

String keyVaultName = "<keyvaultname>";
        String keyVaultUri = "https://" + keyVaultName + ".vault.azure.net";

        System.out.printf("key vault name = %s and key vault URI = %s \n", keyVaultName, keyVaultUri);

KeyClient keyClient = new KeyClientBuilder()
          .vaultUrl(keyVaultUri)
          .credential(new DefaultAzureCredentialBuilder().build())
          .buildClient();
String keyname="kprkey";
CreateRsaKeyOptions options = new CreateRsaKeyOptions(keyname)
             .setKeySize(4096);

keyClient.createRsaKeyWithResponse(options,null);
System.out.println("Created key successfully");
System.out.println("Retrieving key details");
KeyVaultKey key1 = keyClient.getKey(keyname);
        
System.out.println("Your key's ID is '" + key1.getKey() + "'.");
byte[] n = key1.getKey().getN();
int keySize = new BigInteger(1, n).bitLength();
System.out.println("Your key's Size is '" + keySize+ "'.");
  • 密钥已在 Azure 的 keyvault 中创建:

enter image description here

  • 门户中密钥的密钥大小:

enter image description here

  • 控制台响应:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.