Java — Android: шифр с открытым ключом от php сервера

Я пытаюсь записать строку в приложении Android с открытым ключом, который я получаю от моего php-сервера.

код php сервера:

$res = openssl_pkey_new();
openssl_pkey_export($res, $privKey);

$pubKey = openssl_pkey_get_details($res);
$pubKey = $pubKey["key"];

echo $pubKey;

Сервер правильно создает ключ. В моем приложении я храню открытый ключ в переменной «response». Эта переменная похожа на:
response = «—— НАЧАТЬ ПУБЛИЧНЫЙ КЛЮЧ —— MIIB … и т.д … wIDAQAB —— КОНЕЦ ПУБЛИЧНОГО КЛЮЧА ——«

Код Android:

String pass = "password";
String strEncryInfoData="";
try {
KeyFactory keyFac = KeyFactory.getInstance("RSA");
KeySpec keySpec = new X509EncodedKeySpec(Base64.decode(response.trim().getBytes(), Base64.DEFAULT));
Key publicKey = keyFac.generatePublic(keySpec);

cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
byte[] cipherText = cipher.doFinal(pass.getBytes());
strEncryInfoData = new String(Base64.encode(cipherText,Base64.DEFAULT));
} catch (Exception e){

}

Когда я запускаю приложение, появляется эта ошибка:
java.security.spec.InvalidKeySpecException: java.lang.RuntimeException: ошибка: 0D0680A8: процедуры кодирования asn1: ASN1_CHECK_TLEN: неправильный тег

Я не знаю, почему код не содержит пароль. Любая идея? Это про тип кодирования?
Благодарю.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector