一个用户在 Android N 中运行我的应用程序,他崩溃了。我知道谷歌在 Android N 中弃用了加密提供程序,但迁移旧加密数据的最佳方法是什么。

最佳答案

对于 8.0 及以上,您可以引用 here

对于低于 8.0 版本,您可以通过以下代码。

您可以使用此提供程序替换 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");
}
}

10-07 19:45
查看更多