标签: android-keystore

尝试获取密钥时,keytool不会被识别为命令

我正在设置谷歌地图活动,我正在尝试获取我的API密钥.但是在我的cmd中我得到的错误是keytool不被识别为内部或外部命令....等....我尝试使用在类似问题中发布的解决方案,但它对我不起作用.

我的默认dubug密钥库

C:\Users\Sam\.android\debug.keystore
Run Code Online (Sandbox Code Playgroud)

android cmd keystore android-keystore

2
推荐指数
2
解决办法
1万
查看次数

INSTALL_PARSE_FAILED_NO_CERTIFICATES安装修改后的apk文件失败(无效的SHA1签名),即使在使用jarsigner签名后也是如此

我知道有很多其他人在忘记签名他们的apk时遇到INSTALL_PARSE_FAILED_NO_CERTIFICATES错误.这不是我所描述的问题.我将在几个步骤中详述我正在做的事情.

我有一个zipaligned,签名的apk文件(AndroidWorld.apk).我可以安装这个没问题.到现在为止还挺好.

接下来,我用apktool反编译apk.此外,到目前为止一切顺利.

之后,我使用asmdex来修改classes.dex文件并注入一些方法记录.此时,如果我要重新打包apk并尝试安装,它肯定会失败,因为classes.dex的签名不再匹配签名清单中的内容.我意识到了.所以我重新打包apk,zipalign它,然后用我自己的密钥库签名:

jarsigner -verbose -sigalg MD5withRSA -digestalg SHA1 -keystore "android_new_sample.keystore" -storepass mypass "C:\apk\AndroidWorld-release.apk" asample
Signing with keystore android_sample.keystore alias asample
   adding: META-INF/MANIFEST.MF
   adding: META-INF/ASAMPLE.SF
   adding: META-INF/ASAMPLE.RSA
  signing: assets/x.js
  signing: assets/x.css
  signing: assets/special_offers.html
  signing: res/layout/displayjourneylist.xml
  signing: res/layout/journey_row.xml
  signing: res/layout/login.xml
  signing: res/layout/searchjourney.xml
  signing: res/layout/settings.xml
  signing: res/layout/webview.xml
  signing: res/layout/window_title.xml
  signing: res/menu/option_menu.xml
  signing: AndroidManifest.xml
  signing: resources.arsc
  signing: res/drawable-hdpi/header.png
  signing: res/drawable-hdpi/ic_launcher.png
  signing: res/drawable-ldpi/header.png
  signing: res/drawable-ldpi/ic_launcher.png
  signing: res/drawable-mdpi/header.png
  signing: res/drawable-mdpi/ic_launcher.png
  signing: classes.dex
  signing: assets/x-runtime.properties
        1 file(s) copied.
Run Code Online (Sandbox Code Playgroud)

那里没有投诉,对吧?它看起来像classes.dex已签署,它没有抱怨.但是现在,如果我用jarsigner -verify检查签名apk的完整性,那就不开心了:

jarsigner.exe -verify -verbose -certs C:\apk\AndroidWorld-release-signed.apk …
Run Code Online (Sandbox Code Playgroud)

java android jar-signing android-keystore

2
推荐指数
1
解决办法
3772
查看次数

Android:应用程序在发布模式下登录后启动时崩溃

目前我在登录发布模式后启动时遇到app崩溃问题,但在调试模式下它工作正常.

我现在无法弄清楚问题,即使我做了研究并继续寻找解决方案,但我还是没有设法让它起作用

当应用程序崩溃时,它不会显示在我的应用程序logcat中,但显示在" No Filter "中

错误是

java.lang.NoSuchFieldError: NO_ACTION
        at java.lang.reflect.Method.getDefaultValue(Native Method)
        at java.lang.reflect.Method.getDefaultValue(Method.java:353)
        at libcore.reflect.AnnotationFactory.getElementsDescription(AnnotationFactory.java:75)
        at libcore.reflect.AnnotationFactory.<init>(AnnotationFactory.java:112)
        at libcore.reflect.AnnotationFactory.createAnnotation(AnnotationFactory.java:94)
        at java.lang.reflect.Field.getAnnotation(Native Method)
        at java.lang.reflect.Field.getAnnotation(Field.java:209)
        at com.a.g.a(Unknown Source)
        at com.a.b.a(Unknown Source)
        at com.a.b.a(Unknown Source)
        at com.a.b.onCreate(Unknown Source)
        at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:252)
        at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:164)
        at com.a.h.c(Unknown Source)
        at com.a.h.a(Unknown Source)
        at com.a.a.a(Unknown Source)
        at com.socialproperty.app.service.AppController.onCreate(Unknown Source)
        at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1007)
        at com.lbe.security.service.core.client.b.x.callApplicationOnCreate(Unknown Source)
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4361)
        at android.app.ActivityThread.access$1500(ActivityThread.java:138)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1259)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:136)
        at android.app.ActivityThread.main(ActivityThread.java:5034)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:515)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:805)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:621)
        at …
Run Code Online (Sandbox Code Playgroud)

android release-mode android-keystore

2
推荐指数
1
解决办法
2764
查看次数

如何在 Java 中更改 KeyStore 文件的密码?

我正在使用 javaKeyStore来存储用户安全信息并使用密码锁定(加密)密钥存储并在需要时使用密码检索信息,这工作正常。

但我不知道如何更改同一个 keyStore 文件的密码

我正在使用使用KeyStore.load(InputStream,Password)用户密码访问密钥库keyStore.store(Keystore,password)并将值写入密钥库的方法。

有没有办法更改keyStore文件的密码。我已经检查了此处提供的 api 文档:http : //docs.oracle.com/javase/7/docs/api/java/security/KeyStore.html

java android keystore android-keystore java-security

2
推荐指数
1
解决办法
863
查看次数

忘记密码后如何恢复密钥库密码

我有一组应用程序,在将它们发布到商店之前,我总是对所有应用程序使用一个签名,即使我有用户名,我也碰巧忘记了密钥库密码。这是找回密码的有效方法吗?

java android keystore android-keystore

2
推荐指数
1
解决办法
1万
查看次数

如何将 App Inventor 2“.keystore”文件导入或添加到 Android Studio

我之前使用 App Inventor 2 创建 Android 应用程序,但最近我迁移到 Android Studio,但我已将使用 App Inventor 2 创建的应用程序上传到 Google Play Store,该应用程序的下载量超过 1000 次。现在我正在尝试使用 Android Studio 重新创建该应用程序,但我不想失去我的用户,所以我使用相同的项目名称和密钥库。

但问题是我已经从 App Inventor 2 下载了具有“.keystore”文件扩展名的密钥库文件,但我不知道如何将它导入到 Android Studio。

我也尝试过设置该文件的密钥库路径,但后来我对如何填写密钥库密码、密钥别名和密钥密码的字段感到困惑;因为我不知道这些。

android keystore app-inventor android-keystore android-studio

2
推荐指数
1
解决办法
2175
查看次数

Android应用程序的发布密钥库位于何处?

我正在按照本教程创建基于回合制的多人游戏:https://developers.google.com/games/services/console/enabling

在"指定客户端ID设置"部分下,他们说要运行:

keytool -list -keystore [path-to-debug-keystore]

这很好,因为他们也不在话下调试密钥库的位置:"在Windows中,调试密钥库可以位于C:\用户[用户名] .android\debug.keystore"

他们还说要运行这个命令:

keytool -list -keystore [path-to-production-keystore]

但他们没有提到发布/生产密钥库的位置.

...它在哪里?

android keystore android-keystore

2
推荐指数
1
解决办法
1811
查看次数

Android KeyStore 获取存储密钥的原始字节/字符串

我可以生成一个密钥并存储在 Android 密钥库中,如下所示:

private static final String AndroidKeyStore = "AndroidKeyStore";
private static final String AES_MODE = "AES/GCM/NoPadding";
keyStore = KeyStore.getInstance(AndroidKeyStore);
keyStore.load(null);

if (!keyStore.containsAlias(KEY_ALIAS)) {
    KeyGenerator keyGenerator = KeyGenerator.getInstance(KeyProperties.KEY_ALGORITHM_AES, AndroidKeyStore);
    keyGenerator.init(
            new KeyGenParameterSpec.Builder(KEY_ALIAS,
                    KeyProperties.PURPOSE_ENCRYPT | KeyProperties.PURPOSE_DECRYPT)
                    .setBlockModes(KeyProperties.BLOCK_MODE_GCM)                   .setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_NONE)
                    .setRandomizedEncryptionRequired(false) 
                    .build());
    keyGenerator.generateKey();
}
Run Code Online (Sandbox Code Playgroud)

同样,我可以像这样检索它:

keyStore.getKey(KEY_ALIAS, null);
Run Code Online (Sandbox Code Playgroud)

我知道 getKey() 函数返回一个 Key 对象,但我还没有找到一种方法来显示密钥本身。它似乎没有 toString() 或 getBytes() 或类似的东西。

如何获取密钥的字节,或者至少打印出它的字符串版本?有可能吗?

encryption android key android-keystore

2
推荐指数
1
解决办法
3040
查看次数

将API密钥存储在密钥库中

我继承了一个应用程序,该应用程序调用受API密钥保护的服务,不幸的是该API密钥已嵌入该应用程序中。显然,这并不理想,因此我希望将API密钥嵌入Android Keystore中。我过去在其他Android应用程序上使用过https://github.com/scottyab/secure-preferences之类的库,但在这种情况下,安全性不会通过安全性审核。

阅读以下内容:https : //medium.com/@ericfu/securely-storing-secrets-in-an-android-application-501f030ae5a3我得到了所有东西,但是如何在最初的密钥库中获取API密钥作为构建的一部分。理想情况下,我会将API密钥作为登录过程的一部分返回,以便在运行时将其插入,但是不幸的是,我目前无法更改登录服务。

我已经阅读了许多文章,例如:在应用程序中存储和保护私有API密钥的最佳实践,但是大多数实践集中在将密钥保留在源代码存储库之外。

因此,问题是:是否有一个gradle构建机制(或任何机制)可以在构建时将特定的数据插入Android Keystore?

android android-keystore

2
推荐指数
1
解决办法
738
查看次数

发布应用程序后,Google Drive Api 停止工作

我在我的应用程序中使用 google drive api,当我使用 .apk 文件安装它时,它在调试和发布版本上都可以正常工作。

但是,如果我在 Playstore 上发布相同版本的 .apk,然后从那里下载它,我将无法登录 Google。

关于这个问题,我所能找到的只是人们没有使用发布密钥库在 Google 的开发人员控制台上生成凭据,而我的情况并非如此。

android google-drive-api android-keystore google-console-developer

2
推荐指数
1
解决办法
782
查看次数