【发布时间】:2016-08-23 09:14:53
【问题描述】:
一位用户在 Android N 中运行我的应用程序时发生了崩溃。我知道 Google 已在 Android N 中弃用 Crypto 提供程序,但迁移旧加密数据的最佳方法是什么。
【问题讨论】:
标签: android
一位用户在 Android N 中运行我的应用程序时发生了崩溃。我知道 Google 已在 Android N 中弃用 Crypto 提供程序,但迁移旧加密数据的最佳方法是什么。
【问题讨论】:
标签: android
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");
}
}
【讨论】:
您可以将此代码用于提供者:
SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1").getProvider();
【讨论】: