Google Tink: Как получить необработанную ключевую строку из KeysetHandle? - PullRequest
0 голосов
/ 08 октября 2018

Я новичок в Tink и хотел бы извлечь исходные данные ключа (в виде строки) из KeysetHandle, который я сгенерировал следующим образом:

keysetHandle = KeysetHandle.generateNew(
                    AeadKeyTemplates.AES128_GCM);

Или, может быть, какой-то другой API для его получения.

Как мне этого добиться?

Ответы [ 2 ]

0 голосов
/ 21 июня 2019

Пример поможет.Вот как вы должны использовать CleartextKeysetHandle.write() для наблюдения за профилем ключа:

Попробуйте это для отображения:

    // display key [Caveat: ONLY for observation]
       public void display_key_profile_for_test_observation_only(KeysetHandle keysetHandle) throws IOException, GeneralSecurityException
       {
         System.out.println("\nDisplay key:");
        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
        CleartextKeysetHandle.write(keysetHandle, JsonKeysetWriter.withOutputStream(outputStream));
        System.out.println("\n"+ new String(outputStream.toByteArray()));
       }

Поскольку это относится к классу, вам, возможно, придется сделать небольшой кодмодификация.Вы видите ключевое слово this, обозначающее, что фрагменты кода происходят из класса.Вот тестовое использование:


       public void trial_usage_key_generation() throws IOException, GeneralSecurityException {

           for (CIPHER_SYMMETRIC_ALGOS algo_type : CIPHER_SYMMETRIC_ALGOS.values()) { 
               System.out.println("Generating key for : " + algo_type); 
               KeysetHandle keysetHandle = this.generate_key_for_test_observation_only(algo_type); 
               this.display_key_profile_for_test_observation_only(keysetHandle);
            }
       }
0 голосов
/ 18 января 2019

Вы можете записать Keyset на диск с помощью либо KeysetHandle.write (), для которого требуется шифрование, либо другого CleartextKeysetHandle.write ().Оба требуют BinaryKeysetWriter или JsonKeysetWriter.

...