在安卓中生成对称密钥,可用于生成Json Web Token



我们的前端一直遵循一种在Web加密API的帮助下生成对称密钥的方法:

const tempKey = await crypto.subtle.deriveKey(
{
name: 'PBKDF2', salt: salt,
iterations: 100000, hash: 'SHA-256'
},
importedPassword,
{name: 'AES-GCM', length: 256},
true,
['encrypt']
);

我试图从中解释第一个参数,即生成PBKDF2

SecretKeyFactory secretKeyFactory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256");
KeySpec keySpec = new PBEKeySpec(passphraseOrPin).toCharArray(), salt.getBytes(), iterations, outputKeyLength);
SecretKey secretKey = secretKeyFactory.generateSecret(keySpec);

然后我完全不明白第三个参数,它尝试在生成的SecretKey上运行长度为256AES算法。如何在安卓中做到这一点?为什么它是必要的或有益的??

我不知道那个 API,但猜测它用于确定从 KDF 输出的适当位数。 它实际上并没有在这里运行/使用 AES

此参数的文档说:

derivedKeyAlgorithm是一个对象,用于定义派生密钥将用于的算法。

这似乎是一致的

最新更新