чтение .key файла android - PullRequest
       3

чтение .key файла android

2 голосов
/ 31 июля 2010

У меня проблема при попытке прочитать файл .key.Этот файл создан обычным Java (J2SE), и я прочитал его из приложения Android.Когда я читаю этот файл с Android, он ничего не дает, и я сделал некоторые отладки, и я заметил, что он не может прочитать файл.Также я проверил, могу ли я прочитать файл (используя file.canRead()), и кажется, что я не могу. Обратите внимание, что я создал обычное Java-приложение (J2SE) с тем же кодом, и он успешно работал.

код, который я использовал, это:

    public KeyPair LoadKeyPair(String algorithm, String publicFileName, String privateFileName) {
    // Read Public Key.
    PublicKey publicKey = null;
    PrivateKey privateKey = null;
    try {
    File filePublicKey = new File(publicFileName);
    FileInputStream fis = new FileInputStream(publicFileName); // The program stops here
    byte[] encodedPublicKey = new byte[(int) filePublicKey.length()];
    fis.read(encodedPublicKey);
    fis.close();

// Read Private Key.
File filePrivateKey = new File(privateFileName);
fis = new FileInputStream(privateFileName);
byte[] encodedPrivateKey = new byte[(int) filePrivateKey.length()];
fis.read(encodedPrivateKey);
fis.close();

// Generate KeyPair.
KeyFactory keyFactory = KeyFactory.getInstance(algorithm);
X509EncodedKeySpec publicKeySpec = new X509EncodedKeySpec(
encodedPublicKey);
publicKey = keyFactory.generatePublic(publicKeySpec);

PKCS8EncodedKeySpec privateKeySpec = new PKCS8EncodedKeySpec(
encodedPrivateKey);
privateKey = keyFactory.generatePrivate(privateKeySpec);

} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvalidKeySpecException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return new KeyPair(publicKey, privateKey);
}

Ответы [ 2 ]

0 голосов
/ 18 февраля 2012

Вы добавили в Манифест следующую строку?

<uses-permission android:name="android.permission.READ_INTERNAL_STORAGE"/>
0 голосов
/ 28 мая 2011

Является ли файл .key таким же, как файл .pem?

Если это так, я просто делаю что-то подобное, потому что PemReader находится в BouncyCastleProvider, и это беспорядок! Слишком много кода для слишком немногих вещей, которые я хочу использовать

if(mKey==null){
        BufferedReader pubFile = new BufferedReader(new InputStreamReader(mCtx.getResources().openRawResource(R.raw.public.pem)));
        try {
            String line = new String();
            StringBuilder key = new StringBuilder();
            while((line = pubFile.readLine())!= null){
                if(!line.contains("----")){
                    key.append(line);
                }
            }
            mKey = key.toString();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                pubFile.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

Как видите, у меня есть мой public.pem в папке res / raw / в моем приложении. Конечно, у меня нет .pem с закрытым ключом в нем. Я подписываю свой открытый ключ и проверяю, что информация была подписана открытым ключом, созданным из закрытого ключа, который я храню на своем сервере.

Надеюсь, что ответ на ваш вопрос и достаточно ясно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...