Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android/Java的CCBKDF替代方案_Java_Android_Security_Pbkdf2 - Fatal编程技术网

Android/Java的CCBKDF替代方案

Android/Java的CCBKDF替代方案,java,android,security,pbkdf2,Java,Android,Security,Pbkdf2,我试图在Java/Android上找到CCCalibratePBKDF方法的替代方法,以了解在一定时间内我可以完成多少轮PBKDF2 你知道吗 我目前正在实现自己的解决方案,它基于计算速度和少量的轮数,并基于这些轮数猜测数字,但它非常不一致——在iOS上,数字是非常恒定的 旁注-我不知道iOS方法是基于实数计算,还是他们只知道硬件,所以他们预先知道数字。您正在搜索一个现代的密钥派生函数。通常会提到以下算法:PBKDF2(NIST唯一支持的算法)、bcrypt(优于PBKDF2)、scrypt(优

我试图在Java/Android上找到CCCalibratePBKDF方法的替代方法,以了解在一定时间内我可以完成多少轮PBKDF2

你知道吗

我目前正在实现自己的解决方案,它基于计算速度和少量的轮数,并基于这些轮数猜测数字,但它非常不一致——在iOS上,数字是非常恒定的


旁注-我不知道iOS方法是基于实数计算,还是他们只知道硬件,所以他们预先知道数字。

您正在搜索一个现代的密钥派生函数。通常会提到以下算法:PBKDF2(NIST唯一支持的算法)、bcrypt(优于PBKDF2)、scrypt(优于bcrypt)、argon2(高端)

在java世界中,人们倾向于使用bcrypt,因为它是与spring security(一个可以信任的实现)一起交付的算法。它也很容易使用,因为它的功因子只有一个维度(与scrypt不同)


在尝试选择最佳工作因素时,请记住,Android世界是高度细分的,设备的功能也各不相同。手机上的好东西,在某些设备上可能真的很慢。我相信iOS世界会更加一致。

我不认为测量本地设备是一个好的解决方案,因为对PBKDF2的攻击不一定要发生在设备本身上。因此,如果本地设备的速度与安全性完全无关,那么本地设备的速度也是如此

此外,在Android上,在对PBKDS2算法进行基准测试时,可能会有更多的后台应用程序处于活动状态,因此您不能简单地计算PBKDF2算法所需的时间。在具有大/小磁芯的设备上,可能会发生这样的情况:计算只使用弱的小磁芯,这也会伪造结果

因此,我将提供一个选项,用户可以在其中设置迭代次数,而不是对其进行测量。 为了更简单的使用,我会使用一个名为“安全级别(越大越好,但可能会导致延迟)”的设置。设置为下拉字段,值从1到10,迭代次数呈指数增长-例如:

  1 = 100.000 * 2^1 (200.000)
  2 = 100.000 * 2^2 (400.000)
 ..
 10 = 100.000 * 2^10 (102.400.000)

谢谢,我们决定使用PBKDF2。由于这种分割,我试图找到一种方法来计算设备在一定时间限制下的合理循环次数。然后只需执行一些测试,并取可接受的最高工作系数值。你知道,如果有人试图破解它,他不会在手机上破解,而是在一个有很多GPU单元的主机上破解,因为PBKDF2在这方面很弱。