小编San*_*kar的帖子

android是否支持.jks密钥库类型?

我正在尝试使用服务器团队提供的密钥库连接到服务器.

在首先向服务器发送服务调用时,我使用以下api创建了KeyStore实例

KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType());
Run Code Online (Sandbox Code Playgroud)

它将密钥库类型返回为"BKS".

服务器团队发送的密钥库类型为".jks"(somename.jks)因此,我得到异常"密钥存储的错误版本".

我尝试通过以下方式将"JKS"传递给KeyStore的getInstance()

KeyStore keystore = KeyStore.getInstance("JKS");       
Run Code Online (Sandbox Code Playgroud)

但在这里,我得到了异常"未发现KeyStore JKS实现".

这是一段代码:

KeyStore trustStore  = KeyStore.getInstance(KeyStore.getDefaultType());

InputStream instream = mContext.getAssets().open("somename.jks");

try {
    trustStore.load(instream, "password".toCharArray());
} finally {
    try {
       instream.close();
    } catch(Exception ignore) {
    }
}
Run Code Online (Sandbox Code Playgroud)

请指导我解决这个问题.

ssl android keystore

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

通过Eclipse安装时,Android App崩溃了

每次重新安装我的日蚀时,我都会收到以下异常.每次我重新安装当前位于前台的应用程序时都会发生这种情况.

我希望这个错误只发生在开发期间,因为我通过Eclipse卸载正在运行的应用程序.

有没有人在用户手机上看到此错误?

当我转向使用ICS的Galaxy Nexus时,这开始发生在我身上.

02-22 11:31:07.098: E/AndroidRuntime(479): FATAL EXCEPTION: main
02-22 11:31:07.098: E/AndroidRuntime(479): java.lang.RuntimeException: Unable to instantiate application android.app.Application: java.lang.NullPointerException
02-22 11:31:07.098: E/AndroidRuntime(479):  at android.app.LoadedApk.makeApplication(LoadedApk.java:466)
02-22 11:31:07.098: E/AndroidRuntime(479):  at android.app.ActivityThread.handleBindApplication(ActivityThread.java:3260)
02-22 11:31:07.098: E/AndroidRuntime(479):  at android.app.ActivityThread.access$2200(ActivityThread.java:117)
02-22 11:31:07.098: E/AndroidRuntime(479):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:969)
02-22 11:31:07.098: E/AndroidRuntime(479):  at android.os.Handler.dispatchMessage(Handler.java:99)
02-22 11:31:07.098: E/AndroidRuntime(479):  at android.os.Looper.loop(Looper.java:123)
02-22 11:31:07.098: E/AndroidRuntime(479):  at android.app.ActivityThread.main(ActivityThread.java:3683)
02-22 11:31:07.098: E/AndroidRuntime(479):  at java.lang.reflect.Method.invokeNative(Native Method)
02-22 11:31:07.098: E/AndroidRuntime(479):  at java.lang.reflect.Method.invoke(Method.java:507)
02-22 11:31:07.098: E/AndroidRuntime(479):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
02-22 11:31:07.098: E/AndroidRuntime(479):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
02-22 11:31:07.098: E/AndroidRuntime(479): …
Run Code Online (Sandbox Code Playgroud)

eclipse crash android

9
推荐指数
1
解决办法
3915
查看次数

javax.net.ssl.SSLPeerUnverifiedException:尝试使用https与.bks密钥库进行连接时没有对等证书

可能重复:
javax.net.ssl.SSLException:不受信任的服务器证书

我正在尝试使用带有.bks密钥库的"https"方案连接到服务器,但由于此问题我无法连接.

任何人都可以告诉我这是什么原因以及如何解决这个问题.

这是我的代码

public String httpRestGetCallwithCertificate(String url, String payLoad) {
        String result = null;
        DefaultHttpClient httpClient = null;
        KeyStore trustStore = null;
        try {
            httpClient = new DefaultHttpClient(getHttpParams());
            HostnameVerifier hostnameVerifier = org.apache.http.conn.ssl.SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER;

            HttpHost targetHost = new HttpHost("hostname","portno","https");
            httpClient.getCredentialsProvider().setCredentials(
                    new AuthScope(targetHost.getHostName(), targetHost.getPort()),
                    new UsernamePasswordCredentials("username","password"));
            trustStore  = KeyStore.getInstance(KeyStore.getDefaultType());

            InputStream instream = mContext.getResources().openRawResource(R.raw.truststore);
            try {
                trustStore.load(instream, "password".toCharArray());

            } finally {
                try { instream.close(); } catch (Exception ignore) {}
            }
            SchemeRegistry registry = new SchemeRegistry();
            SSLSocketFactory socketFactory = new SSLSocketFactory(trustStore);
            socketFactory.setHostnameVerifier((X509HostnameVerifier) hostnameVerifier); …
Run Code Online (Sandbox Code Playgroud)

ssl android keystore ssl-certificate

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

如何从静态快捷方式启动活动的现有实例

我的应用程序中有一个Activity(MainActivity),并且有一个静态快捷方式(指向TempActivity)。

由于静态快捷方式将始终具有FLAG_ACTIVITY_NEW_TASK和FLAG_ACTIVITY_CLEAR_TASK设置,因此我创建了TempActivity,这是一个不可见的Activity,即它将启动MainActivity,然后调用finish()。而且,如开发人员文档中所建议,SecondActivity 在应用程序的AndroidManifest.xml文件中具有android:taskAffinity =“”

MainActivity具有android:launchMode =“ singleTop”

即使执行了此操作,MainActivity仍会在新任务中启动,而不是在从主屏幕启动时创建的现有任务中启动。

AndroidManifest.xml

<activity
            android:name=".MainActivity"
            android:launchMode="singleTop">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

            <meta-data
                android:name="android.app.shortcuts"
                android:resource="@xml/shortcuts" />
        </activity>
        <activity android:name=".TempActivity" android:taskAffinity=""></activity>
Run Code Online (Sandbox Code Playgroud)

捷径

<shortcut
        android:enabled="true"
        android:icon="@drawable/icon"
        android:shortcutDisabledMessage="@string/app_name"
        android:shortcutId="static"
        android:shortcutLongLabel="@string/app_name"
        android:shortcutShortLabel="@string/app_name">
    <intent
        android:action="custom"
        android:targetClass="com.example.mobile.appshortcut.TempActivity"
        android:targetPackage="com.example.mobile.appshortcut" />
    </shortcut>
Run Code Online (Sandbox Code Playgroud)

TempActivity.java

public class TempActivity extends AppCompatActivity {

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //setContentView(R.layout.activity_main2);
    //Intent intent = getIntent(); // From Shortcut
    Intent intent = new Intent(); // For Testing
    intent.setClass(this,MainActivity.class);
    startActivity(intent);
    finish();
}

@Override
protected void …
Run Code Online (Sandbox Code Playgroud)

android android-7.0-nougat android-appshortcut

5
推荐指数
1
解决办法
787
查看次数

没有标题的对话框

我需要在对话框中删除标题.注意我不需要一个空白的标题.我需要删除标题部分.以下是我的代码:

final Dialog dialog1=new Dialog(context);
    dialog1.setContentView(R.layout.redeemvoucher_first);
    dialog1.setCanceledOnTouchOutside(true);
    dialog1.getWindow().setLayout(900,500);
        dialog1.show();
Run Code Online (Sandbox Code Playgroud)

android android-dialog

4
推荐指数
1
解决办法
1448
查看次数

如何在android中使用初始化向量进行AES-256加密和解密

在我的应用程序中,我想通过加密来存储一些安全数据.当用户希望我需要通过解密来向他显示它.这工作正常.但问题是我需要为每条消息存储加密消息和初始化向量.这个初始化向量是在加密时生成的,我必须在解密时使用它来获取原始消息.

因此,如果用户存储1000条消息,我需要存储这1000条加密消息和相应的1000条初始化向量.我想避免为每条消息存储初始化向量.

请告诉我使用初始化矢量进行AES-256加密的方法.

下面是我的加密和解密代码

/*
     * This method will do the AES-256 encryption.
     */
    private byte[] encrypt(char[] raw, String cardno) {
     //  This raw is some unique key like password.      
        SecretKeyFactory factory = null;
        SecretKey tmp = null;
        Cipher cipher = null;
        byte[] ciphertext = null;
        AlgorithmParameters params = null;
        try {
            factory = SecretKeyFactory.getInstance("PBEWITHSHA-256AND256BITAES-CBC-BC");
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        KeySpec spec = new PBEKeySpec(raw, mSalt, 1024, 256);

        try {
            if (factory != null)
                tmp = factory.generateSecret(spec);
        } …
Run Code Online (Sandbox Code Playgroud)

encryption android aes

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