在android上加速scrypt

时间:2016-07-08 01:23:31

标签: android scrypt

我在制作Android应用时使用scrypt,计算哈希需要很长时间。这就是我所说的:

String hash = Base64.encodeToString(SCrypt.scrypt("password".getBytes(), "salt".toString().getBytes(), 16384, 16, 2, 128), Base64.DEFAULT);

这就是我在Gradle中声明依赖的方式:

compile group: 'com.lambdaworks', name: 'scrypt', version: '1.4.0'

在我的Nexus 6P上计算哈希值差不多需要一分钟,这当然非常慢。有没有人知道如何更快地做到这一点?我是新手,因此,为什么它如此缓慢以及如何加快它是无能为力的。

1 个答案:

答案 0 :(得分:2)

我认为.first.first参数应针对您的用例进行优化。

this answerthis slide p17

中的一些数字
  

(N = 2 ^ 14,r = 8,p = 1)< 100毫秒(互动使用)

     

(N = 2 ^ 20,r = 8,p = 1)< 5s(敏感存储)

以及SCrypt.scrypt()Nr含义:

  

N:一般工作因素,迭代计数。

     

r:用于底层哈希的blocksize;微调相对内存成本。

     

p:并行化因子;微调相对cpu-cost

因此,如果您想要更少的时间,p应该减少。 Nr与硬件有关,需要更多运行时环境才能动态调整。