Как создать симметричный ключ шифрования с помощью Google Tink? - PullRequest
0 голосов
/ 04 сентября 2018

У меня есть ключ (скажем) "thisist0psecret", который я хочу использовать в качестве симметричного ключа шифрования / дешифрования с библиотекой Google Tink . Я сбит с толку, что я не могу сделать эту простую вещь. Я могу сгенерировать новых ключей (используя различные шаблоны AES128_GCM и т. Д.), Сериализовать их, а затем прочитать их обратно с помощью KeysetReader. Но, на всю жизнь, я не могу понять, как создать симметричный ключ с определенными байтами ключа, которые я указываю .

Я могу сделать следующее, например, с Tink:

KeysetHandle ksh = KeysetHandle.generateNew(AeadKeyTemplates.AES128_GCM);
Aead aead = AeadFactory.getPrimitive(ksh);
String pt = "hello, world!";
byte[] encbytes = aead.encrypt(pt.getBytes(), null);
byte[] decbytes = aead.decrypt(encbytes, null);
String orig = new String(decbytes);
assert(pt.equals(orig));

Но я хочу установить в строке симметричного ключа набор байтов, который я указываю, например "thisist0psecret", а затем зашифровать этот ключ с помощью открытого ключа пользователя, который будет выполнять расшифровку.

Какие-нибудь эксперты по Google Tink, которые могут пролить свет на это?

1 Ответ

0 голосов
/ 06 сентября 2018

Я ведущий разработчик для Tink.

Если ваш ключ генерируется случайным образом, вы можете напрямую использовать тонкий API, см .: https://github.com/google/tink/blob/master/java/src/main/java/com/google/crypto/tink/subtle/AesGcmJce.java.

Это не рекомендуется, потому что тонкий слой может измениться без предупреждения (хотя он был относительно стабильным в истории Тинка).

Если ваш ключ является паролем, вы хотите получить ключ из него, используя что-то вроде Scrypt или PBKDF2. Мы еще не поддерживаем встроенное шифрование на основе паролей в Tink, пожалуйста, отправьте запрос на функцию, и мы посмотрим, чем мы можем помочь.

...