如何使用scrypt生成256位密钥?

时间:2015-02-26 05:19:57

标签: android encryption hash cryptography scrypt

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

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

这是我得到的输出

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

这比AES engin可以处理的还要多,我怎么能用呢

1 个答案:

答案 0 :(得分:2)

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