Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Как получить RSAPublicKey из строки с ключем


Автор: Alex089 23.5.2009, 19:12
Доброго времени суток

Есть строка 
"8413D796F0835845B97FDA4B2D04A04774B8078AF905932A66E0A1D6C6878E43632F9C7545B8126416C3028F710E3CE487220ED11055BED5CCF41B5AAAB57689#10001", 
которая представляет собой публичный ключ алгоритма RSA. Как из этой строки получить объект с интерфейсом RSAPublicKey?

Автор: can4ec 24.5.2009, 01:20
Как ты получаешь данною строку ? В плане с помощью какого метода ты получаешь данную строку?

Автор: Alex089 24.5.2009, 10:10
Это часть авторизации на Яндексе. 

Идет GET-запрос по адресу http://auth.mobile.yandex.ru/yamrsa/key/
Ответ сервера:
Код
200 OK
Content-Type: application/xml

<?xml version="1.0"?>
<response>
   <key>8413D796F0835845B97FDA4B2D04A04774B8078AF905932A66E0A1D6C6878E43632F9C7545B8126416C3028F710E3CE487220ED11055BED5CCF41B5AAAB57689#10001</key>
   <request_id>42535f65d2694228b429f53709fbd743</request_id>
</response>

Содержимое элемента key - RSA-ключ, элемента request_id - идентификатор авторизационной сессии.
С помощью этого ключа надо зашифровать логин и пароль и отослать обратно.

Автор: can4ec 24.5.2009, 15:53
Нет, выложи код как ты генерируешь данный ключ. 

Автор: Alex089 24.5.2009, 16:00
Я его не генерирую. Просто получаю и должен использовать.

Пока это выглядит вот так:
Код
 Socket s = new Socket("auth.mobile.yandex.ru", 80);
 String request = "GET /yamrsa/key/ HTTP/1.1\r\nHost: auth.mobile.yandex.ru\r\n\r\n";
 System.out.print(request);
 OutputStream os = s.getOutputStream();
 os.write(request.getBytes());
 // получаем поток данных от сервера
 InputStream is = s.getInputStream();
 // читаем ответ сервера
 byte buf[] = new byte[64*1024];
 int r = is.read(buf);
 s.close();
 String str = new String (buf,0,r);
 String key = str.substring(str.lastIndexOf("<key>")+5, str.lastIndexOf("</key>"));
 System.out.println(key);
 String request_id = str.substring(str.lastIndexOf("<request_id>")+12, str.lastIndexOf("</request_id>"));
 System.out.println(request_id);

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)