1

我正在使用 scrypt 生成密钥派生,但问题是输出大于 256 位,我想在具有 256 位密钥的 AES-GCM 中使用它。那么我该怎么做呢?我想在Android上制作一个应用程序。

编辑:对不起,伙计们没有给你更多信息好吧..我正在使用的库是这个 https://github.com/wg/scrypt

这是我得到的输出

"$s0$e0801$eX8cPtmLjKSrZBJszHIuZA==$vapd0u4tYVdOXOlcIkFmrOEIr1Ml2Ue1l2+FVOJgbcI="

这已经超出了 AES 引擎可以处理的范围,所以我该如何使用它

4

1 回答 1

2

Scrypt 是一种密钥派生算法。这意味着您可以使用它来生成任意数量的伪随机字节。

在 wg 库中,这样做的方法是调用Scrypt.scrypt函数

byte[] key = Scrypt.scrypt(password, salt, N, r, p, 32);

这将为您提供所需的32字节密钥材料。

密钥派生与密码存储

你的困惑可以理解。wg/scrypt的文档没有提到 scrypt 的真正用途。他们仅记录其使用密码存储算法。

这就是为什么您错误地调用ScryptUtil.scrypt(而不是Scrypt.scrypt):

string hash = ScryptUtil.scrypt(password, N, r, p);

该方法返回一个字符串,它适合 AES(或任何其他类型)加密的密钥。

于 2015-05-18T15:57:45.280 回答