Форум программистов, компьютерный форум, киберфорум
Free Pascal
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/21: Рейтинг темы: голосов - 21, средняя оценка - 4.95
0 / 0 / 0
Регистрация: 09.02.2021
Сообщений: 2

Подскажите по какому принципу шифруется текст

09.02.2021, 13:50. Показов 6476. Ответов 12

Студворк — интернет-сервис помощи студентам
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
const BLOCKS = 11;
var
    flag : array[1..BLOCKS] of longint = (??????);
    key : string = ?????;
    f : file of longint;
    i, k, j : integer;
    part : longint;
    x : byte;
    alphabet : Set of '!'..'~' = ['!'..'~'];
begin
    assign(f, 'ciphertext.txt');
    rewrite(f);
    for i := 1 to BLOCKS do begin
        part := 0;
        j := 0;
        for k := 4 downto 1 do begin
            x := (flag[i] >> j) and $ff;
            if chr(x) in alphabet then begin
                part := part << 8;
                part := part or (((x - ord('!') + ord(key[k])) mod 94) + ord('!'));
                j := j + 8;
            end;
        end;
        write(f, part);
    end;
    close(f);
end.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.02.2021, 13:50
Ответы с готовыми решениями:

По какому принципу выбирается процессор?
В Ситилинке есть возможность отсортировать процессоры по возрастанию цены. Но даже если сравнивать только процессоры Интел или только...

По какому принципу работают переводчики
я решил написать переводчик(не используя сторонние API(да работы будет много)) пока что с русского на английский. так вот у меня...

По какому принципу рисуется объект?
glColor3f(0.3,0.3,0.3); glBegin(GL_POINTS); for(int i=0;i&lt;10000;i++) { b=(float)i/50.0*3.1415*2.0; ...

12
 Аватар для mr-Crocodile
3053 / 1672 / 657
Регистрация: 19.03.2019
Сообщений: 5,380
09.02.2021, 18:00
Лучший ответ Сообщение было отмечено naskh11 как решение

Решение

по такому принципу.
исходный текст представлен в массиве FLAG виде 4-х байтных longint чисел (каждый байт - это значение символа из алфавита
'!'..'~'
читаем очередные 4-байта.
каждый символ из этих четырех смещаем на соответствующий ключ, заданный четырёхбайтной строкой KEY
Цитата Сообщение от naskh11 Посмотреть сообщение
Pascal
1
((x - ord('!') + ord(key[k])) mod 94) + ord('!')
полученные байты опять собираем в 4-х байтное число и это число сохраняем в ДВОИЧНЫЙ (бинарный) файл ciphertext.txt
в результате получаем ciphertext.txt шифрованный текст.

пример программы шифрования
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
{$mode objfpc}
 
const BLOCKS = 11;
var
    flag : array[1..BLOCKS] of longint =
     (1416128883,1601463672,1952413537,1935630949,1600482915,1868850532,1600222303,809066310,1700950645,1634892123,1315927901);
    key : string = 'ABCD';
    f : file of longint;
    i, k, j : integer;
    part : longint;
    x : byte;
    alphabet : Set of '!'..'~' = ['!'..'~'];
begin
    assign(f, 'ciphertext.txt');
    rewrite(f);
 
    for i := 1 to BLOCKS do begin
        part := 0;
        j := 0;
        for k := 4 downto 1 do begin
            x := (flag[i] >> j) and $ff;
            if chr(x) in alphabet then begin
                part := part << 8;
                part := part or (((x - ord('!') + ord(key[k])) mod 94) + ord('!'));
                j := j + 8;
            end;
        end;
        write(f, part);
    end;
    close(f);
end.

расшифровать его (и выдать на экран) можно, например, вот так
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
{$mode objfpc}
 
var
    key : string = 'ABCD';
    f : file of longint;
    i, k, j : integer;
    part : longint;
    x : byte;
    alphabet : Set of '!'..'~' = ['!'..'~'];
begin
 
    assign(f, 'ciphertext.txt');
    reset(f);
 
    while Not Eof(f) do begin
        Read(f, part);
        j := 0;
        for k := 1 to 4 do begin
            x := (part >> j) and $ff;
            if (x<>0) and (chr(x) in alphabet) then begin
                x :=((x - ord('!') + 94 + 94 - ord(key[k])) mod 94) + ord('!');
                if (x<>0) and (chr(x) in alphabet) then Write(chr(x))
                else begin WriteLn('Decode Error! halt!'); Close(f); Halt end;
                j := j + 8;
            end;
        end;
    end;
    close(f);
end.
1
0 / 0 / 0
Регистрация: 09.02.2021
Сообщений: 2
09.02.2021, 21:37  [ТС]
Большое спасибо ))
0
0 / 0 / 0
Регистрация: 30.05.2020
Сообщений: 10
18.02.2021, 18:56
А что означает это ошибка? Пытался расшифровать
Миниатюры
Подскажите по какому принципу шифруется текст  
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
18.02.2021, 20:30
Там вроде лишний знак >.
0
 Аватар для mr-Crocodile
3053 / 1672 / 657
Регистрация: 19.03.2019
Сообщений: 5,380
19.02.2021, 10:12
Цитата Сообщение от Puporev Посмотреть сообщение
Там вроде лишний знак >.
не-не.. не лишний.
https://wiki.freepascal.org/Operators
Logical operators
OperatorOperation
notBitwise unary negation
andBitwise and
orBitwise or
xorBitwise exclusive or
shlBitwise shift to the left
shrBitwise shift to the right
<<Bitwise shift to the left (corresponds with the operator shl)
>>Bitwise shift to the right (corresponds with the operator shr)
Armavia, покажи код программы целиком. И ещё, уточни, какой у тебя Паскаль. У тебя точно Free Pascal? Какая версия?

Добавлено через 1 минуту
>> можно заменить на shr
0
Модератор
10358 / 5644 / 3396
Регистрация: 17.08.2012
Сообщений: 17,215
19.02.2021, 17:17
Судя по фото, это Pascal ABC.NET.

mr-Crocodile, в PABC.NET сдвиги shr и shl работают так же, как работают сдвиги >> и << в языках, поддерживающих платформу .NET, а не так, как во всех прочих паскалях: для отрицательных чисел сдвиги компилируются не в shr и shl, а в sar и sal. Это, конечно, совершенно нелогично, но ничего с этим поделать нельзя. Для положительных чисел сдвиги shr и shl работают так же, как в остальных паскалях.

Для Pascal ABC.NET правильно будет так: нужно заменить типы переменных с знаковых на беззнаковые того же размера, например, везде integer или longint заменить на longword, и заменить >> или << на shr или shl.
1
0 / 0 / 0
Регистрация: 30.05.2020
Сообщений: 10
19.02.2021, 22:52
Перепробовал, кажется, уже все, но не работает. Может ли кто-нибудь выполнить этот код?
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
{$mode objfpc}
 
var
    key : string = 'ABCD';
    f : file of longint;
    i, k, j : integer;
    part : longint;
    x : byte;
    alphabet : Set of '!'..'~' = ['!'..'~'];
begin
 
    assign(f, 'ciphertext.txt');
    reset(f);
 
    while Not Eof(f) do begin
        Read(f, part);
        j := 0;
        for k := 1 to 4 do begin
            x := (part >> j) and $ff;
            if (x<>0) and (chr(x) in alphabet) then begin
                x :=((x - ord('!') + 94 + 94 - ord(key[k])) mod 94) + ord('!');
                if (x<>0) and (chr(x) in alphabet) then Write(chr(x))
                else begin WriteLn('Decode Error! halt!'); Close(f); Halt end;
                j := j + 8;
            end;
        end;
    end;
    close(f);
end.
Если содержимое файла ciphertext.txt такое: x@?,ea#OE{9%?L/OPL0OEL*LIL72I{2%6~2!If42f{2;
0
 Аватар для mr-Crocodile
3053 / 1672 / 657
Регистрация: 19.03.2019
Сообщений: 5,380
20.02.2021, 09:48
Armavia, что значит - "не работает"? Так прямо и пишет - "Не работаю"? Или ошибка возникает? Какая ошибка? Что ты сделал, чтобы её устранить?
это раз.

второе. Я что, про Паскаль просто так спрашивал? Вот это для кого вопрос:
Цитата Сообщение от mr-Crocodile Посмотреть сообщение
И ещё, уточни, какой у тебя Паскаль. У тебя точно Free Pascal? Какая версия?

Цитата Сообщение от Armavia Посмотреть сообщение
Если содержимое файла ciphertext.txt такое: x@?,ea#OE{9%?L/OPL0OEL*LIL72I{2%6~2!If42f{2;
Откуда ты этот файл взял? Ты, наверное, не в курсе, но для дешифровки ОБЯЗАТЕЛЬНО нужен тот же самый ключ, который использовался для шифрования
Цитата Сообщение от Armavia Посмотреть сообщение
Pascal
4
key : string = 'ABCD';
Этот ключ использовал я в своём примере. У тебя для шифровки использовался другой ключ. Без него дешифровать не получится (ну, точнее, можно попытаться взломать полным перебором всех возможных ключей найти подходящий), но "это уже совсем другая история". (с) Л.Каневский
0
0 / 0 / 0
Регистрация: 03.10.2021
Сообщений: 2
03.10.2021, 15:27
а как конкретно найти этот ключ? Есть задание что есть такой вот string: x@?,ea#OE{9%?L/OPL0OEL*LIL72I{2%6~2!If42f{2;

и блок кода. Нужно найти этот ключ. Но я так понимаю что они все в данном задании состоят из 4 символов. Так как их найти?
0
0 / 0 / 0
Регистрация: 27.09.2023
Сообщений: 6
22.04.2024, 23:46
Добавлено через 33 минуты
wondersome, нашли ключ?
0
Модератор
 Аватар для D1973
9903 / 6441 / 2454
Регистрация: 21.01.2014
Сообщений: 27,342
Записей в блоге: 3
24.04.2024, 07:14
Однозначно - нет. Он и с форума пропал после последнего сообщения... Ищет где-то в другом месте...
0
 Аватар для mr-Crocodile
3053 / 1672 / 657
Регистрация: 19.03.2019
Сообщений: 5,380
24.04.2024, 08:54
Цитата Сообщение от Archik507V Посмотреть сообщение
нашли ключ?
А откуда это задание с поиском ключа? Можешь задание ЦЕЛИКОМ привести?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.04.2024, 08:54
Помогаю со студенческими работами здесь

по какому принципу формируется выдача?
От чего зависит положение сайтов рекламодателей в рекламном блоке? Что сделать, чтобы мой сайт был первым в этом списке..?

По какому принципу работает программа?
Немного нетривиальная просьба. Есть программа, но ну нужно понять, как она работает именно пошагово. Приложу также рисунок в пеинте, как...

По какому принципу пишут поисковики?
На каком принципе делают поисковики!

По какому принципу выводятся теги?
Теги должны сортироваться по по количеству записей, но не сортируются. Причем не сортируются даже по алфавиту. В чем проблема &lt;?php...

по какому принципу определяется копия контента
Вот как-то раньше никогда не задумывался, по какому принципу определяется копия контента и тд... Допустим у меня есть...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru