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

编辑:
抱歉,没有给您更多信息
好吧..我正在使用的图书馆是这个
https://github.com/wg/scrypt

这是我得到的输出

“ $ s0 $ e0801 $ eX8cPtmLjKSrZBJszHIuZA == $$ vapd0u4tYVdOXOlcIkFmrOEIr1Ml2Ue1l2 + FVOJgbcI =”

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

最佳答案

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

在wg库中,执行此操作的方法是调用Scrypt.scrypt function

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(或任何其他类型)加密的密钥。

关于android - 如何使用scrypt生成256位 key ?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28734991/

10-12 01:58