【发布时间】:2021-09-17 21:39:21
【问题描述】:
有人告诉我他创建了这样的哈希:
const enc = await NativeModules.Aes.pbkdf2(plaintext_pasword, serial, 100000, 256);
hashed_password= Buffer.from(enc, 'hex').toString('base64').substr(0, 32);
在 Android 中,我不知道如何将其转换为 Java。我试过了
SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
KeySpec spec = new PBEKeySpec(password.toCharArray(), serialNumber.getBytes(), 100000, 256);
SecretKey tmp = factory.generateSecret(spec);
SecretKeySpec key = new SecretKeySpec(tmp.getEncoded(), "AES");
hashed_password = new String(Base64.encode(key.getEncoded(), Base64.NO_WRAP)).substring(0, 32);
但这可能是不正确的;)
而且这也比原始解决方案慢得多(据说原始解决方案在华为 P20 上花费不到 1 秒,而在我的 P30 上花费将近一分钟)。
谁能帮我翻译这段代码?
【问题讨论】:
标签: android encryption hash pbkdf2