Я пытаюсь сделать программу, которая использует шифрование RSA для шифрования и дешифрования данных, отправленных на и с нескольких компьютеров. У меня есть папка, в которой хранятся открытые ключи других компьютеров, на моем компьютере. Однако я не могу загрузить этот ключевой файл и создать объект publicKey, который указывает на него. Моя текущая попытка показана ниже, но мне было интересно, какие методы используют другие люди для этого?Как вы шифруете данные с помощью ключевого файла в java?
//Returns the key of a friend (given as input)
public PublicKey getFriendsKey(String friend){
try{ObjectInputStream friendsKeyInput = new ObjectInputStream(new fileInputStream(programLocation + "/Text Files/encryptionKeys/" + friend + "PublicKey.key"));
PublicKey friendsKey = friendsKeyInput.readObject();
}
catch(Exception e){e.printStackTrace();}
return friendsKey;
}
Понимаете ли вы, что длина данных ограничена длиной ключа и в 100-1000 раз медленнее симметричного шифра? Эти данные обычно шифруются с помощью симметричного алгоритма, такого как AES? – zaph
@zaph: фактически длина ключа минус не менее 11 октетов для заполнения/рандомизации, хотя теперь эти ключи в основном (требуется) не менее 2048 бит = 256-октет, что относительно менее важно. OP: расскажите нам, как были сгенерированы файлы и/или отправили образец файла (или несколько, если они не все одинаковы); если не текст, используйте шестнадцатеричные дампы. –
@ dave_thompson_085 Я знаю, но для того, чтобы избежать аргументов (я потерпел неудачу здесь), я тщательно изложил «ограниченную длину ключа», которая истинна. Если я учитываю прокладку, я получил захлопнув из-за необработанных данных. В контексте моего комментария я хочу указать, что существует ограничение на размер данных для асимметричного шифрования, и это казалось актуальным, поскольку файлы состояний OP, которые могут быть больше, чем размер ключа - заполнение - независимо от того, что я не хотел проблема заполнения. – zaph