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


Автор: Grizli 13.4.2012, 14:57
У меня есть код, где я указываю где хранится мой public.der
Код

         File pubKeyFile = new File("public.der");
         DataInputStream dis = new DataInputStream(new FileInputStream(pubKeyFile));
         byte[] keyBytes = new byte[(int) pubKeyFile.length()];   
         
         
        dis.readFully(keyBytes);
        dis.close();

        X509EncodedKeySpec keySpec = new X509EncodedKeySpec(keyBytes);
        KeyFactory keyFactory = KeyFactory.getInstance("RSA");
        RSAPublicKey publicKey = (RSAPublicKey)keyFactory.generatePublic(keySpec);


Но мне нужно, что-бы ключ был вшит в .jar архив, помогите разобраться, вот, что я пишу, но мне readFromStream соответственно подчёркивает ошибкой...
Код

       byte [] keyBytes;
    InputStream is = MinecraftUtils.class.getResourceAsStream("/resources/public.der");
    keyBytes = readFromStream(is);
    is.close();

Автор: dorogoyIV 13.4.2012, 15:40
имей ввиду!!!
при тестировании во время сборки и при запуске уже собранного джара, пути отличаются!!!

можно применить такое во время тестирования джарика:
Код

try
{
 File pubKeyFile = new File("public.der"); // здесь, если запускается из джар, файл не будет найден, и переходим в блок catch
 DataInputStream dis = 
}
catch(Exception ex)
{
  File pubKeyFile = new File("/public.der");
 DataInputStream dis = 
}

ну это примерно...

Автор: Grizli 13.4.2012, 16:51
А можно как-то поподробней?

Автор: dorogoyIV 13.4.2012, 17:10
Цитата(Grizli @  13.4.2012,  16:51 Найти цитируемый пост)
А можно как-то поподробней?

ну представь - папка ...java/.../bin/ - это корень.
ты запускаешь свою прогу, и файлы ищутся относительно этого корня.
если ты собрал джар, корнем станет этот джар.
блин, ну не знаю как объяснить понятнее  smile 

а ты используешь какую то IDE. там вообще непонятно где корень  smile 

Автор: Grizli 13.4.2012, 17:55
Моя непонимать, я и указываю /resources/public.der он мне пишет, что невозможно найти этот файл, хотя относительно самого .jar архива будет именно такая директория...
Т.е в моём понимание это внутри уже .jar архива находится папка resources а в ней файл public.der

Автор: dorogoyIV 13.4.2012, 17:58
Цитата(Grizli @  13.4.2012,  17:55 Найти цитируемый пост)
Т.е в моём понимание это внутри уже .jar архива находится папка resources а в ней файл public.der

да

Автор: Grizli 13.4.2012, 18:00
Ну да smile лог то выдаёт, что файл найти не может smile 

Автор: dorogoyIV 13.4.2012, 20:16
исходник внутри...

Автор: Grizli 13.4.2012, 20:33
Но как мне быть с 
Код

         byte[] keyBytes = new byte[(int) pubKeyFile.length()];   
         
        X509EncodedKeySpec keySpec = new X509EncodedKeySpec(keyBytes);

Автор: dorogoyIV 13.4.2012, 21:04
ну так у меня в примере чтение строк (char - string), а тебе надо байты читать...
давай думай ;)

Автор: Grizli 15.4.2012, 14:17
Собственно как узнать размер файла в байтах, который находится внутри .jar архива...

Автор: dorogoyIV 16.4.2012, 09:00
в текстовом поле надо нажать "Enter"

в программе выдается файл в виде массива байтов.
у меня в примере этот массив переводится в String, просто, что бы отобразить его, тебе переводить в String не надо.

Автор: Grizli 20.4.2012, 17:21
dorogoyIV, плюсище тебе огромный! 

Автор: Mirkes 20.4.2012, 20:49
Цитата(Grizli @ 20.4.2012,  17:21)
dorogoyIV, плюсище тебе огромный!

Выполнил просьбу Grizli

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