Шифрование пароля с помощью Google / Tink - PullRequest
0 голосов
/ 08 мая 2018

Добрый день, я использовал google / tink для шифрования пароля для хранения в БД, выполнив следующие действия:

// 1. Generate the key material.
KeysetHandle keysetHandle = 
    KeysetHandle.generateNew(AeadKeyTemplates.AES128_GCM);

// 2. Get the primitive.
Aead aead = AeadFactory.getPrimitive(keysetHandle);

// 3. Use the primitive to encrypt a plaintext,
byte[] ciphertext = aead.encrypt(plaintext, aad);

Он в основном конвертирует пароль в байты, но когда я конвертирую его в строку для хранения в БД, он сохраняет зашифрованный пароль в следующем формате: -�@~�k�D߶{׼�.

Но я хочу сохранить пароль в формате, подобном 11As7737Cs9ue9oo09, используя шифрование tink.

Есть ли способ сделать это?

Ответы [ 2 ]

0 голосов
/ 23 февраля 2019

Я согласен со всеми, что вы НЕ ДОЛЖНЫ хранить пароли в открытом виде.

Однако, чтобы ответить на ваш вопрос, потому что я думаю, что это обычная проблема, когда вы получаете какой-то зашифрованный текст, а строка не читается. Скажем, вы хотите хранить данные без пароля в зашифрованном виде и читать. Вам нужно было бы Base64 кодировать ваш зашифрованный текст.

Когда вы извлекаете данные, закодированные в Base64, из базы данных, вам нужно будет декодировать строку в Base64, а затем запустить ее в процессе расшифровки. Опираясь на ваш пример,

String readable = new String(java.util.Base64.getEncoder().encode(cipherText));

byte[] bytesToDecrypt = java.util.Base64.getDecoder().decode(readable.getBytes());
0 голосов
/ 24 мая 2018

Маниш, возможно, вы не захотите шифровать пароли. Вы хотите их хешировать. Tink пока не поддерживает хеширование паролей, но мы можем добавить поддержку, если будет достаточно интереса.

Не могли бы вы подать заявку на функцию на https://github.com/google/tink/issues/new?

...