Android API 24及以下版本中使用的PBKDF2WithHmacSHA256

3

我正在尝试在安卓平台使用Luke Joshua Park的SecureCompatibleEncryptionExamples。我的问题是,在API 26以下的安卓版本中,PBKDF2WithHmacSHA256不可用。有没有办法解决这个问题?


1
您可以通过使用其他东西来解决它,比如PBKDF2withHmacSHA1。或者您可以按照规范自己实现它来解决它。对于API < 26,我会选择PBKDF2withHmacSHA1,对于API >= 26,我会选择PBKDF2WithHmacSHA256。虽然在PBKDF2算法中的HMAC中使用SHA1应该是安全的,但它已经过时了,应尽快在所有可能的地方删除。 - President James K. Polk
同意@James的观点。当使用SHA-1作为PRF时,您应该没问题。有一些细微差别,因此请确保正确使用PBKDF2WithHmacSHA256以维护复合材料的安全性。另请参见为什么HMAC-SHA1仍被认为是安全的?如果SHA1已经被破解,PBKDF2 / RFC 2898是否已经失效? - jww
1个回答

3
在API 26之前,Android不支持使用“PBKDF2withHmacSHA256”,但在旧版本中它支持使用“PBKDF2withHmacSHA1”。除非你特别想使用SHA256作为PBKDF2哈希算法,否则更改这一点没有任何坏处。
通过调整“PBKDF2_NAME”参数可以相对容易地更改我的代码库中的算法。与PBKDF2一起使用,SHA1仍然是安全的,所以你可以简单地调整:
private final static String PBKDF2_NAME = "PBKDF2WithHmacSHA256";

致:

private final static String PBKDF2_NAME = "PBKDF2WithHmacSHA1";

在您的Android代码和PHP中更改以下内容:
define("PBKDF2_NAME", "sha256");

致:

define("PBKDF2_NAME", "sha1");

需要注意的是,如果您将此用作传输安全性,则不应该这样做。您应该使用TLS。


谢谢,Luke。那里有很好的示例集合。对于像我这样的新手非常有帮助。 - DCD
Luke,我的意图也是要用你的例子来写PHP。 - DCD
@dcd4u2 请查看我的编辑。请特别注意我关于TLS的评论。您不应该将代码示例用作传输安全性。 - Luke Joshua Park

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接