Шифровка

  • 10
  • Недоступна
Придумать механизм шифровки/дешифровки. Программа запускается с одним из следующих наборов параметров: -e fileName fileOutputName -d fileName fileOutputName где: fileName - имя файла, который необходимо зашифровать/расшифровать. fileOutputName - имя файла, куда необходимо записать результат шифрова
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (78)
  • популярные
  • новые
  • старые
Для того, что бы оставить комментарий вы должны авторизоваться
Loveandpepper19 уровень, Москва
12 января, 15:21
Ультрапростецкая задачка, если перекурить и осознать адское описание джавараша. Шифрование - добавить к байту единичку (или что угодно). Дешифровка - наоборот.
Вагиф22 уровень, Санкт-Петербург
16 ноября 2018, 13:19
Решил написать красиво, если интересно смотри сюда.
DancingShaman23 уровень
7 ноября 2018, 23:36
РЕШАЕШЬ ЗАДАЧУ С ПОМОЩЬЮ АЛГОРИТМА AES-256 КУРИШЬ МАНАУЛЫ, РАЗБИРАЕШЬСЯ, КАК ПОЛЬЗОВАТЬСЯ НОВЫМИ КЛАССАМИ РЕШАЕШЬ ЗАДАЧУ, ВСЕ КРУТО РАБОТАЕТ, ПОЛУЧАЕШЬ КАЙФ ЗАХОДИШЬ В КОММЕНТАРИИ И КОПИРУЕШЬ ТО РЕШЕНИЕ, КОТОРЕ ЕСТ ВАЛИДАТОР
Павел19 уровень, Москва
28 декабря 2018, 09:37
Там же русским по белому написано "Придумайте механизм", а не используйте существующие инструменты)
Gagarin28 уровень, Санкт-Петербург
26 октября 2018, 11:50
Странная блуда, сделал шифровку и дешифровку по ключу, в итоге всё работает но валидатор ругается на всё. ммм
Евгений Бондаренко28 уровень, Минск
14 сентября 2018, 09:51
XOR с размером файла, т.е. 256 вариантов ключа для расшифровки уже опосредованно храниться в файле
Andry Max35 уровень, Минск
9 августа 2018, 23:29
не стал изобретать велосипед и просто записал байты в обратном порядке
Sergey Serezhenkin26 уровень, Москва
29 октября 2018, 16:00
а я просто каждый байт при записи в файл умножал на 2))) а при дешифровке делил на 2 и всё)))
solwo19 уровень, Санкт-Петербург
17 ноября 2018, 19:03
А при умножении на два никогда не выходили за пределы 256? 0xC8 (=200) * 2 = 0x0190 (=400) -> в файл записывается байт 0x90 Чтение 0x90 (=144) / 2 = 0x48 (=72). После шифрования и дешифрования число 200 превратилось в 72.
Павел19 уровень, Москва
28 декабря 2018, 09:39
не должно работать у вас, иначе байт код преобразованный в Int выйдет за пределы и вы делением не получите то же число int
NazFarr27 уровень
6 августа 2018, 06:26
задание решил просто и легко при шифровки +1 в байты, и -1 при дешифровки. нужно про шифровки и дешифровки прочест.?
stas21 уровень
5 июля 2018, 15:52
Прочитал, что можно было добавлять\убавлять единички-ок, я сам так же хотел сделать.Но может кто-то объяснить что не так с моим кодом?не принимает по всем пунктам кроме первого.
public static void main(String[] args) throws Exception {

        String param = args[0];
        String fileName = args[1];
        String fileOutputName = args[2];

        /*String param = "-e";
        String fileName = "g:\\test.txt";
        String fileOutputName = "g:\\test02.txt";*/

        /*String param = "-d";
        String fileName = "g:\\test02.txt";
        String fileOutputName = "g:\\test03.txt";*/

        InputStream inputStream = new BufferedInputStream(new FileInputStream(fileName));
        FileOutputStream outputStream = new FileOutputStream(fileOutputName);

        String key = "DX8m8yrrqaKDfpyAdZn7VQ";
        byte[] encoded = Base64.getDecoder().decode(key);
        SecretKey secretKey = new SecretKeySpec(encoded, "AES");

        if (param.equals("-e")){
            Cipher cipher = Cipher.getInstance("AES");
            int count;
            cipher.init(Cipher.ENCRYPT_MODE, secretKey);
            CipherOutputStream cipherOutputStream = new CipherOutputStream(outputStream, cipher);
            while ((count = inputStream.read()) != -1){
            cipherOutputStream.write(count);
            }
            cipherOutputStream.close();
        }

        else if (param.equals("-d")){
            Cipher cipher = Cipher.getInstance("AES");
            cipher.init(Cipher.DECRYPT_MODE, secretKey);
            InputStream cipherInputStream = new BufferedInputStream(new CipherInputStream(inputStream, cipher));
            int count;


            while ((count = cipherInputStream.read()) != -1) {
                outputStream.write(count);
            }
            cipherInputStream.close();
        }

        inputStream.close();
        outputStream.close();
Mykhailo Hriha27 уровень, Львов
8 августа 2018, 20:40
Хотел зашифровать через +- 1?А зачем так сложно? public static void main(String[] args) throws Exception{ FileInputStream is = new FileInputStream(args[1]); FileOutputStream ot = new FileOutputStream(args[2]); switch (args[0]){ case "-e" : while (is.available() > 0){ int data = is.read()+1; ot.write(data); } is.close(); ot.close(); break; case "-d" : while (is.available() > 0){ int data = is.read() - 1; ot.write(data); } is.close(); ot.close(); break; } }
Sasha Dmitrieva20 уровень, Москва
14 декабря 2018, 14:56
чем дальше в лес тем хуже валидатор
Володимир Штаба31 уровень, Киев
29 июня 2018, 01:03
Я зделал тупо перестановку частей файла создав 4 буфера и мешал их . Хотя можно было изощриться и придумать что то посложнее типо с ключом который пишется в конец и шифруется спец образом типо мат оперций или какой то подмены с словарем
Alexander Avdoshin34 уровень, Нижний Новгород
19 июля 2018, 15:08
Ахах а я просто делал инкремент/декремент байта)
Володимир Штаба31 уровень, Киев
19 июля 2018, 23:37
Ну можно и так но в таком случаи кто то взламает твою шифровку .. Простыми путями на практике ходить не дадут .. правда и шифровку слишком заумную делать не нужно так как продают исходники в которых еще будут разбираться еще другие люди.
Oleg Solovichenko29 уровень, Екатеринбург
7 июня 2018, 18:32
поменял местами половинки байта