Шифровка

  • 10
  • Недоступна
Придумать механизм шифровки/дешифровки. Программа запускается с одним из следующих наборов параметров: -e fileName fileOutputName -d fileName fileOutputName где: fileName - имя файла, который необходимо зашифровать/расшифровать. fileOutputName - имя файла, куда необходимо записать результат шифрова
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (114)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Роман Носулько19 уровень, Казань
5 мая, 16:56
Если кто-то как и я не понял, что в строке Program arguments переменные для проверки, должны быть заданы ТАК: "-e" "fileName" "fileOutputName". Тогда можно использовать args[0], args[1], args[2]. Я же использовал такую запись: Program arguments : "-e fileName fileOutputName". В коде использовал: String[] data = args[0].split(" "); Такое решение валидатор не принимает, ругаясь на все кроме первого пункта требований.
Мишаня19 уровень
вчера, 06:48
все что передано аргументами вроде уже разделено сплитом в массив строк, какой смысл искать внутри массива args[0] пробелы там или -e или -d
Dmitriy19 уровень
24 апреля, 12:32
Поразрядная операция исключающая ИЛИ позволяет делать задачу практически в три строки, не считая открытия закрытия потоков:
int key = 88;
int data = fis.read() ^ key;
fos.write(data);
Все, такая конструкция будет работать как в сторону шифрования так и дешифрования.
katfald20 уровень, Киев
30 апреля, 13:40
Что значит "^"?
Dmitriy19 уровень
2 мая, 22:31
поразрядная операция исключающего ИЛИ. лень много писать, поэтому проще загуглить если интересно)
MrKermit20 уровень, Москва
22 апреля, 08:15
+1 байт -1 байт
vapima19 уровень, Москва
26 апреля, 13:48
тож так сделал)) теперь храню все пин коды так
Мишаня19 уровень
вчера, 07:06
новый байт = int+1 или записать лишний байт между каждым байтом)
Антон22 уровень, Москва
25 марта, 12:05
сделал побитовый сдвиг, туда обратно
Андрей29 уровень, Гомель
20 марта, 16:17
Поменял местами все соседние байты - тоже прокатило
Евгений Ашкинадзе19 уровень, Минск
15 марта, 18:27
Что-то смотрю тут все отнимали и вычитали, либо записывали наоборот. Я же хотел сделать простой алгоритм, который даже файл в несколько гигабайт быстро "зашифрует". Поэтому просто буфером в 8к проходился и внутри него по своему перемешивал байты между собой. При чём так, что бы повторное перемешивание не приводило к декодированию. Для декодирования годится только перемешивание в обратном порядке.
Alexey Tarakanov29 уровень, Москва
13 марта, 17:54
То чувство, когда задачи посложнее на самом деле даются гораздо легче основного блока и решаются мин за 10 с 1 попытки :) не мудрствовал сильно, шифровка: +1 к byte, дешифровка: -1. а благодаря прошлым урокам сразу отмел мысль что возможна проблема с превышением byte, тк при превышении он просто пойдет по второму кругу (128 -> 1, 129->2), поэтому можно как прибавлять, так и отнимать, логика одинаковая.
Эмиль Кан29 уровень, Москва
16 марта, 14:17
Проверил, по второму кругу не пошло. Для того чтобы пошло, надо применить модуль (input.read() + encryptionStep) % 128
Alexey Tarakanov29 уровень, Москва
16 марта, 19:32
Символ ~ согласно таблице это byte = 126. В коде вы прибавляете 50, то получаете 176 (или byte = -80), по вашей ссылке внизу есть расширение таблицы ascii, должен получиться символ ░, но тк вы используете кодировку windows-1251, то увидете это: ° (тык - внизу по этой ссылке соответствует тому, что вы получите у себя в IntelliJ IDEA). Что касается соединения моего примера с вашей задачей - попробуйте убрать %128 и +50 замените на +257. Это окажется тем же самым, как и +1. Ну или на +256, тогда вообще ничего не изменится.
while(input.available() > 0)
                output.write(input.read()+257);
Эмиль Кан29 уровень, Москва
16 марта, 19:58
Спасибо!
Александр23 уровень, Казань
13 марта, 12:36
Интересно, можно такое расшифровать не зная алгоритма?
БгобизшчЩевЪТюъКьЮзщЬиеЭиХЮРцЮибжЩч#яѕбХХРавназжаа"гШвУлиамйж%АХЮУмпгдЮълшЯЭЧгТрАмйпзпЬиЦЯЦСдакжнЪжг$ю¶вЦЬюрмЫлгШйсабЭЯФъг)	јзкЪгЪЧЪЫаошгинд$ерЯпЬХсжп(ИжЩЮжЯЫаХпйшЯиЯЬЬШрЩяыёплзирЮдЮзЬЩЯЫнрео)ЙЩгдоТХежпкилжбддбФЯамщж(»вЫжзЯЦлмижиЯлжиЭлЫЫУЯк)	ВЫЧвЯШгЮЮиеунедЦШвгЯмЩ•
ЅлЮЩигдЫдТдпвзйЬиевХа!яыВъожЫаЮру0ЦШдбХмЮьѕЯЪШ#яѕбвЭпЕвЮалзЪЧгдЮТэ	БнкзигажхоЬЬЫгамзмжЭШЦ!эГЭХюпщ(зЩЮЫбЯсаанйезЫ(
Harry20 уровень, Москва
5 апреля, 21:23
Добрый день. Да, такие шифртексты легко можно дешифровать. Если длинна шифртекста очень маленькая, то его конечно перебрать труднее - слишком маленькая выборка для поучения какой-либо статистики, но в таком маленьком объеме и не передашь много =) Современные стойкие криптографические алгоритмы основываются, например, на проблемах факторизации больших чисел(алгоритм RSA).
Иван27 уровень, Санкт-Петербург
4 марта, 20:27
Можно шифровать через унарный оператор ~. В этом случае даже не нужен первый параметр.
Андрей Старжинский22 уровень, Киев
1 марта, 17:53
Шифромание по ключу или простая замена вам в помощь)