Articles of android keystore

如何在eclipse for android中设置自定义密钥库以进行调试

我有一个自定义密钥库,我用它来签署我的apk。 现在我想使用相同的密钥库进行调试。 当我去eclipse-> windows-> preferences-> android-> build并设置我的自定义密钥库时,我得到“Keystore被篡改,或密码不正确”?

如何防止泄露密钥库和密码的使用?

问题 密钥库及其密码用于签署应用程序,然后由Android用于识别开发人员。 如果泄露,有人可以代表我们更新相关的应用程序。 即使该人无法访问我们的Playstore帐户, 他们仍然可以将其发布到其他地方 。 我们到处都看到, “永远不会失去它” , “永远不会泄漏它” ,等等。但是,如果我做了什么呢? 当他们(密钥库和密码)泄漏时我无法find所需的步骤,因此我可以保护我们的用户和我们的应用程序。 题 即使我使用其他appid发布相同的应用程序, 如何保护仍旧旧用户? 这里有一些最好的做法吗?

无法在Android密钥库中生成密钥

我们目前遇到的问题是,当用户安装我们的应用程序时,应用程序尝试访问并在密钥库中生成密钥,但密钥库会抛出此exception: Caused by: java.lang.IllegalStateException: could not generate key in keystore at android.security.AndroidKeyPairGenerator.generateKeyPair(AndroidKeyPairGenerator.java:100) at java.security.KeyPairGenerator$KeyPairGeneratorImpl.generateKeyPair(KeyPairGenerator.java:275) 我们认为它与手机上的解锁模式有关,无法解锁密钥库,和/或设备管理员锁定密钥库。 这是密钥库的创建方式以及密钥的生成方式: public SecretKeyWrapper(Context context, String alias) throws GeneralSecurityException, IOException { mCipher = Cipher.getInstance(“RSA/ECB/PKCS1Padding”); final KeyStore keyStore = KeyStore.getInstance(“AndroidKeyStore”); keyStore.load(null); if (!keyStore.containsAlias(alias)) { generateKeyPair(context, alias); } final KeyStore.PrivateKeyEntry entry = (KeyStore.PrivateKeyEntry) keyStore.getEntry(alias, null); mPair = new KeyPair(entry.getCertificate().getPublicKey(), entry.getPrivateKey()); } private static […]

检索私钥时,链为空

我正在使用我存储在Android密钥库中的RSA密钥对加密我的应用程序中的数据。 我一直在Play商店看到NullPointerException ,但我无法重现它们: java.lang.NullPointerException: chain == null at java.security.KeyStore$PrivateKeyEntry.(KeyStore.java:1205) at java.security.KeyStoreSpi.engineGetEntry(KeyStoreSpi.java:374) at java.security.KeyStore.getEntry(KeyStore.java:644) at MyClass.getKeyStoreEntry(MyClass.java:111) 创建密钥对的源代码 Calendar start = Calendar.getInstance(); start.setTimeInMillis(0); Calendar end = Calendar.getInstance(); end.set(Calendar.YEAR, 3000); KeyPairGeneratorSpec.Builder keySpecBuilder = new KeyPairGeneratorSpec.Builder(context) .setAlias(keyName) .setSubject(new X500Principal(“CN=” + keyName)) .setSerialNumber(BigInteger.TEN) .setStartDate(start.getTime()) .setEndDate(end.getTime()) .setKeySize(RSA_KEY_SIZE); KeyPairGeneratorSpec spec = keySpecBuilder.build(); KeyPairGenerator gen = KeyPairGenerator.getInstance(“RSA”, “AndroidKeyStore”); gen.initialize(spec); gen.generateKeyPair(); 然后检索密钥: private KeyStore.PrivateKeyEntry […]

在Android M和旧版本中使用KeyStore加密和解密用户名?

我正在尝试使用KeyStore在应用程序中加密和解密用户名, 使用KeyPairGeneratorSpec在旧版本中创建密钥,如18到22, KeyPairGeneratorSpec已经在Android M的第23版中进行了描述,但是Android M支持KeyGenParameterSpec。 此KeyGenParameterSpec是否支持向后兼容性或我如何执行此操作? 我尝试了这样的事情,有没有更好的解决方案。 现在工作正常! 在加密和解密的Ciper.getInstance时我需要这样做。 是否有任何单个参数“RSA / ECB / OAEPWithSHA-256AndMGF1Padding”或“RSA / ECB / PKCS1Padding”我可以同时传递这两个版本 ? if(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M){ c = Cipher.getInstance(“RSA/ECB/OAEPWithSHA-256AndMGF1Padding”); }else{ c = Cipher.getInstance(“RSA/ECB/PKCS1Padding”); } 下面的代码现在运行正常,请告诉我如何改进它。 密钥生成器: genkey(){ KeyPairGenerator generator = KeyPairGenerator .getInstance(KeyProperties.KEY_ALGORITHM_RSA, “AndroidKeyStore”); if(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M){ TCLog.e(TAG,”Current version is 23(MashMello)”); //Api level 23 KeyGenParameterSpec spec = new KeyGenParameterSpec.Builder( keyName, […]

密钥库文件D \ Telegram-master \ TMessagesProj \ config \ release.keystore找不到签名config'debug'

我下载了电报的新版本。 运行时,这个错误显示: Keystore file D\Telegram-master\TMessagesProj\config\release.keystore not found for signing config 'debug'. 如何解决?

Androiddebugging密钥库

我试图访问我的.android debug.keystore,所以我可以使用它的脸谱。 当我input到Windows cmd: C:\Users\<user>\.android\debug.keystore 我得到C:\Users\<user>不被识别为内部或外部命令,可操作程序或batch file。 有人可以告诉我最近怎么样?

使用在source / build / target / product / security /

那么正如标题所述,我正在尝试使用platform.x509.pem和platform.pk8签署我的应用程序。 问题是,当我使用keytool-importkeypairs来添加这样的错误时: keytool-importkeypair -k ~/.android/debug.keystore -p android -pk8 platform.pk8 -cert platform.x509.pem -alias platform 而且在尝试使用SignApk.jar直接签名APK时也会出现如下错误: java -jar SignApk.jar platform.x509.pem platform.pk8 test-app.apk test-app-signed.apk Keytool-importkeypairs错误: Error decrypting key 3074042056:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:tasn_dec.c:1319: 3074042056:error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error:tasn_dec.c:381:Type=PKCS8_PRIV_KEY_INFO unable to load private key 3074091208:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:696:Expecting: ANY PRIVATE KEY Importing "platform" with unable to load certificate 3073755336:error:0906D06C:PEM routines:PEM_read_bio:no […]

发布未签名的.apk文件的问题?

关于签名和未签名的.apk文件有很多问题。对于testing和debugging,我们可以使用bin文件夹内生成的无符号.apk文件。 这个apk文件使用一个虚拟keystore文件生成。 我的问题是为什么我们需要使用签名的apk。 我们不能发布未签名的apk。 那有什么问题?

Google地图在发布模式下不会显示在Android上

我试图释放我的应用程序,但有谷歌地图的问题。 该应用程序包含一个显示地图的活动(MapActivity)。 在debugging模式下运行时,地图工作正常。 我以发布模式签署了我的应用程序,并获得了SHA1。 我根据需要在Google控制台上创build了一个新的android键(SHA1; packageName)。 得到了API密钥 在我的应用程序中,我根据需要引用了google-play-services-lib的副本。 我正在使用ADT。 map.xml <?xml version="1.0" encoding="utf-8"?> <fragment xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/map" android:layout_width="match_parent" android:layout_height="match_parent" android:name="com.google.android.gms.maps.SupportMapFragment" /> MapActivity.java public class MapActivity extends FragmentActivity { private GoogleMap map; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.map); map = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)) .getMap(); } AndroidManifest.xml中 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.rentalcar" android:versionCode="1" android:versionName="1.0" > <uses-sdk […]