我正在尝试在安卓平台使用Luke Joshua Park的SecureCompatibleEncryptionExamples。我的问题是,在API 26以下的安卓版本中,PBKDF2WithHmacSHA256不可用。有没有办法解决这个问题?
我正在尝试在安卓平台使用Luke Joshua Park的SecureCompatibleEncryptionExamples。我的问题是,在API 26以下的安卓版本中,PBKDF2WithHmacSHA256不可用。有没有办法解决这个问题?
private final static String PBKDF2_NAME = "PBKDF2WithHmacSHA256";
致:
private final static String PBKDF2_NAME = "PBKDF2WithHmacSHA1";
define("PBKDF2_NAME", "sha256");
致:
define("PBKDF2_NAME", "sha1");
需要注意的是,如果您将此用作传输安全性,则不应该这样做。您应该使用TLS。
PBKDF2withHmacSHA1
。或者您可以按照规范自己实现它来解决它。对于API < 26,我会选择PBKDF2withHmacSHA1
,对于API >= 26,我会选择PBKDF2WithHmacSHA256
。虽然在PBKDF2算法中的HMAC中使用SHA1应该是安全的,但它已经过时了,应尽快在所有可能的地方删除。 - President James K. PolkPBKDF2WithHmacSHA256
以维护复合材料的安全性。另请参见为什么HMAC-SHA1仍被认为是安全的?和如果SHA1已经被破解,PBKDF2 / RFC 2898是否已经失效?。 - jww