美好的一天,我使用google / tink加密密码,使用以下步骤存储在数据库中:
t
它基本上将密码转换为字节,但是当我将其转换为字符串以存储到数据库中时,它以这种格式存储加密密码:// 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);
。
但我想使用tink加密以-�@~�k�D߶{�
格式存储密码。
有什么办法吗?
答案 0 :(得分:5)
Manish,您可能不想加密密码。你想哈希他们。 Tink还不支持密码哈希,但如果有足够的兴趣,我们可以添加支持。
您可以在https://github.com/google/tink/issues/new申请功能请求吗?
答案 1 :(得分:0)
我与在座的每个人都同意,您不要以明文形式存储密码。
但是,回答您的问题是因为我认为当您获得一些密文并且字符串不可读时,这是一个常见的问题。假设您要存储加密且可读的非密码数据。您将需要对密文进行Base64编码。
当您从数据库中取回Base64编码的数据时,您将需要对Base64进行解码,然后在解密过程中运行它。以您的示例为基础,
String readable = new String(java.util.Base64.getEncoder().encode(cipherText));
byte[] bytesToDecrypt = java.util.Base64.getDecoder().decode(readable.getBytes());