用户在Android N中运行我的应用程序,他遇到了崩溃.我知道Google在Android N中弃用了Crypto提供程序,但是迁移旧加密数据的最佳方法是什么.
解决方法:
对于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");
}
}