Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.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 API 24及更低版本上带有HMACSHA256的PBKDF2_Android_Security_Encryption - Fatal编程技术网

Android API 24及更低版本上带有HMACSHA256的PBKDF2

Android API 24及更低版本上带有HMACSHA256的PBKDF2,android,security,encryption,Android,Security,Encryption,我正在尝试在android上使用Luke Joshua Park。我的问题是PBKDF2WithHmacSHA256不适用于API 26以下的android。有没有办法解决这个问题?在API 26之前,Android不支持PBKDF2withHmacSHA256,但在旧版本中它确实支持PBKDF2withHmacSHA1。除非您有特定的原因想使用SHA256作为PBKDF2哈希,否则更改它并没有坏处 通过调整PBKDF2_NAME参数,可以相对轻松地更改我的存储库中的算法。SHA1仍然可以安全地

我正在尝试在android上使用Luke Joshua Park。我的问题是PBKDF2WithHmacSHA256不适用于API 26以下的android。有没有办法解决这个问题?

在API 26之前,Android不支持
PBKDF2withHmacSHA256
,但在旧版本中它确实支持
PBKDF2withHmacSHA1
。除非您有特定的原因想使用SHA256作为PBKDF2哈希,否则更改它并没有坏处

通过调整
PBKDF2_NAME
参数,可以相对轻松地更改我的存储库中的算法。SHA1仍然可以安全地与PBKDF2一起使用,因此您可以简单地调整:

private final static String PBKDF2_NAME = "PBKDF2WithHmacSHA256";
致:

在Android代码和PHP更改中:

define("PBKDF2_NAME", "sha256");
致:


同样值得注意的是,如果你用它作为运输安全,你不应该这样做。您应该使用TLS。

您可以通过使用其他工具来绕过它,例如
PBKDF2withHmacSHA1
。或者您可以按照规范自己实现它来绕过它。对于API<26,我将使用
PBKDF2withHmacSHA1
,对于API>=26,我将使用
PBKDF2WithHmacSHA256
。虽然SHA1在PBKDF2算法的HMAC中使用时应该是安全的,但它已经过时,应该尽快在任何地方删除。同意@James。当使用SHA-1作为PRF时,您应该可以。有一些细微差别,因此请确保您正确使用了带有HMACSHA256的PBKDF2,以维护组合的安全性。还有,谢谢你,卢克。很好的收集例子。对于像我这样的noob来说非常有用。Luke,我的目的也是使用您的PHP示例。@dcd4u2查看我的编辑。请密切关注我对TLS的评论。您不应该将代码示例用作传输安全性。
define("PBKDF2_NAME", "sha256");
define("PBKDF2_NAME", "sha1");