您好,我已经使用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);它基本上将密码转换为字节,但当我将其转换为字符串以存储到DB中时,它以以下格式存储加密的密码:-�@~�k�D߶{�。
但我希望以类似11As7737Cs9ue9oo09的格式存储密码,并使用tink加密。
有什么办法可以做到吗?
发布于 2018-05-24 23:08:45
曼尼什你可能不想加密密码。您希望对它们进行哈希处理。Tink还不支持密码散列,但如果有足够的兴趣,我们可以添加支持。
您可以在https://github.com/google/tink/issues/new上申请功能请求吗?
发布于 2019-02-24 01:10:17
我同意这里的每个人,你不应该以明文存储密码。
然而,回答你的问题,因为我认为这是一个常见的问题,当你得到一些密文,字符串是不可读的。假设您希望存储加密的、可读的非密码数据。您需要对密文进行Base64编码。
当您从数据库检索回Base64编码的数据时,您需要对字符串进行Base64解码,然后在解密过程中运行它。以您的示例为基础,
String readable = new String(java.util.Base64.getEncoder().encode(cipherText));
byte[] bytesToDecrypt = java.util.Base64.getDecoder().decode(readable.getBytes());https://stackoverflow.com/questions/50230326
复制相似问题