Безопасность "Крипто" провайдера устарела в Android N

Пользователь запустил мое приложение в Android N, у него произошел сбой. Я знаю, что Google не поддерживает поставщика Crypto в Android N, но что может быть лучшим способом переноса старых зашифрованных данных.

1 ответ

Вы можете использовать этого провайдера, заменив "Crypto" на SecureRandom, он отлично работает для меня:

Использование,

SecureRandom sr = SecureRandom.getInstance("SHA1PRNG", new CryptoProvider());

вместо,

SecureRandom sr = SecureRandom.getInstance("SHA1PRNG","Crypto");

и ваш класс CryptoProvider, как показано ниже,

import java.security.Provider;
/**
 * Implementation of Provider for SecureRandom. The implementation     supports the
 * "SHA1PRNG" algorithm described in JavaTM Cryptography Architecture, API
 * Specification & Reference
*/
public final class CryptoProvider extends Provider {
    /**
 * Creates a Provider and puts parameters
 */
public CryptoProvider() {
    super("Crypto", 1.0, "HARMONY (SHA1 digest; SecureRandom; SHA1withDSA signature)");
    put("SecureRandom.SHA1PRNG",
            "org.apache.harmony.security.provider.crypto.SHA1PRNG_SecureRandomImpl");
    put("SecureRandom.SHA1PRNG ImplementedIn", "Software");
}
}

Вы можете использовать этот код для провайдера:

SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1").getProvider();
Другие вопросы по тегам