我keystore
现在已经丢失了文件,我需要在Play商店上更新我的应用程序,是否有任何方法可以获取我的keystore
文件,但我有我的旧文件,signed apk
请回答
我想在我的应用程序中集成google plus登录,所以我需要SHA 1.
所以我试图通过命令行使用生成
keytool -exportcert -alias androiddebugkey -keystore~/.android/debug.keystore -list -v
但是当我输入密码时(我在签署apk时使用密码)它要求密钥存储密码.它说错了密码.
如何重置密码?
我需要在 Android 中生成一个椭圆密钥对并将其存储到 KeyStore 以保护私钥不被提取。
我能够使用 Spongycastle 库生成密钥对,但无法在 KeyStore 中导入密钥对。首先,因为我没有证书,其次,即使我尝试创建一个证书,它也没有导入密钥。
我虽然使用 生成密钥对KeyGenParameterSpec
,但在版本 23 以下的 API 中无法访问它。
总结一下我的问题,有没有一种非hacky的方式来使用通用的Android资源来做到这一点?或者根本不可能在 Lollipop 及更低版本上使用椭圆曲线键?
在我的 Android 应用程序中,我需要一种方法来加密本地数据库中存储的数据。我选择 Realm DB 是因为它提供了与加密的无缝集成。我只需要在初始化 Realm 实例时传递一个密钥。该密钥的大小必须为 64 字节。
出于安全原因,我发现存储此密钥的最佳方法是在 AndroidKeyStore 中。我正在努力寻找一种方法来生成具有该大小的密钥(使用任何算法),并将其放入 64 字节数组中。我试图保留 API 19 的 minSdk,但我相信如果需要的话我可以将其提高到 23(这两个版本之间对 AndroidKeyStore 进行了许多更改)。
有人有想法吗?这是我的代码:
类加密.java
private static KeyStore ks = null;
private static String ALIAS = "com.oi.pap";
public static byte[] loadkey(Context context) {
byte[] content = new byte[64];
try {
if (ks == null) {
createNewKeys(context);
}
ks = KeyStore.getInstance("AndroidKeyStore");
ks.load(null);
content= ks.getCertificate(ALIAS).getEncoded(); //<----- HERE, I GET SIZE GREATER THAN 64
Log.e(TAG, "original key :" + Arrays.toString(content));
} catch (KeyStoreException | …
Run Code Online (Sandbox Code Playgroud) 无法使用 AndroidKeystore 提供程序 one < api23 设备生成 EC 密钥对。
在 API 级别 23 之前,可以使用算法“RSA”初始化的 KeyPairGeneratorSpec 的 KeyPairGenerator 生成 EC 密钥,其密钥类型使用 setKeyType(String) 设置为“EC”。无法使用此方法指定 EC 曲线名称 - NIST P 曲线是根据请求的密钥大小自动选择的。
在 Api 23 以下,我应该能够使用 AndroidKeyStore 提供程序生成 EC 密钥对,如下所示的代码片段,这就是我当前正在做的事情。
val ecGenParameterSpec = ECGenParameterSpec("P-256")
val spec = KeyPairGeneratorSpec.Builder(context)
.setAlias(ALIAS)
.setSubject(X500Principal("CN=example"))
.setSerialNumber(BigInteger.ONE)
.setKeyType("EC")
.setAlgorithmParameterSpec(ecGenParameterSpec)
.setStartDate(start)
.setEndDate(end)
.build()
val keyGen = KeyPairGenerator.getInstance("RSA", androidKeyStoreProvider)
keyGen.initialize(spec, SecureRandom())
keyGen.generateKeyPair()
Run Code Online (Sandbox Code Playgroud)
然而我不断得到java.lang.UnsupportedOperationException: private key value S cannot be extracted
。
我在使用 AndroidKeyStore 生成 EC 密钥对期间做错了什么吗?
或者我是否误解了官方AndroidKeyStore文档 …
[Storing c:\Users\USER_NAME\upload-keystore.jks] keytool error: java.io.FileNotFoundException: c:\Users\USER_NAME\upload-keystore.jks (The system cannot find the path specified) java.io.FileNotFoundException: c:\Users\USER_NAME\upload-keystore.jks (The system cannot find the path specified) at java.base/java.io.FileOutputStream.open0(Native Method) at java.base/java.io.FileOutputStream.open(FileOutputStream.java:293) at java.base/java.io.FileOutputStream.<init>(FileOutputStream.java:235) at java.base/java.io.FileOutputStream.<init>(FileOutputStream.java:123) at java.base/sun.security.tools.keytool.Main.doCommands(Main.java:1360) at java.base/sun.security.tools.keytool.Main.run(Main.java:415) at java.base/sun.security.tools.keytool.Main.main(Main.java:408)
Run Code Online (Sandbox Code Playgroud)
它是否包含有关apk签名的系统的一些信息?一些操作系统信息或类似的东西?我听说有人说它包含apk签名设备的mac地址.这是真的吗?Google可以通过签名apk获得哪些信息?
无论如何从.apk获取密钥库文件,不幸的是现在错过了密钥库文件我需要更新我的应用程序,这是有Google Play.请提前帮助Thnx