Архив задач

Дешифрование пароля

Вася написал свою программу для шифрования сообщений и зашифровал с ее помощью сообщение для своего друга Миши. Чтобы усложнить понимание программы, Вася запутал код и добавил использование пароля для осуществления операций шифрования и расшифрования.

Вася отправил Мише сообщение:

="+>j#9j+(%?>j%?8j'//>#$-u

и программу, а пароль отправить забыл. Однако Миша легко расшифровал сообщение без пароля.

Помогите Мише расшифровать сообщение и найти ключ.

Листинг программы приведен ниже.

Паскаль

Си

Uses crt;

Var a, c, d, e: string; b: integer;

Begin

Clrscr; c:= '';

Writeln('Введите текст'); Readln(a);

Repeat

Writeln('Введите ключ'); Readln(d); Until length(d)>=6;

Repeat

b:= 1;

If length(e)<length(a) then

e:=e+d[b]; b:=b+1;

Until length(e)>=length(a);

For b:=1 to length(a) do

c:=c+chr(byte(a[b]) xor byte(e[b]));

For b:=1 to length(a) do write(c[b]);

Writeln;

Readln;

End.

#include <stdio.h>

#include <string.h>

void main()

{

char a[100]={0}, c[100]={0},

d[100]={0}, e[100]={0};

int b;

printf("Введите текст: ");

scanf("%s", a);

do

{

printf("Введите ключ: ");

scanf_s("%s", d, 100);

}

while(strlen(d) < 6);

do

{

b = 0;

if (strlen(e) < strlen(a))

e[strlen(e)] = d[b];

b++;

}

while(strlen(e) < strlen(a));

for (b = 0; b < strlen(a); b++)

c[b] = a[b] ^ e[b];

for(b = 0; b < strlen(a); b++)

printf("%c", c[b]);

printf("\n");

}