Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
0 / 0 / 0
Регистрация: 30.12.2015
Сообщений: 25

RC4 c размером блока 16-бит

18.02.2019, 08:15. Показов 2951. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Была написана программа на питоне, с алгоритмом RC4, где блок 8 бит.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import timeit
data = str(input("Vvedite text:"))
key = str(input("vvedite key:"))
a = timeit.default_timer()
x = 0
spis = list(range(256))
for i in range(256):
    x = (x + spis[i] + ord(key[i % len(key)])) % 256
    spis[i], spis[x] = spis[x], spis[i]
 
x = y = 0
out = []
for char in data:
    x = (x + 1) % 256
    y = (y + spis[x]) % 256
    spis[x], spis[y] = spis[y], spis[x]
    out.append(chr(ord(char) ^ spis[(spis[x] + spis[y]) % 256]))
t=timeit.default_timer()-a
t=t*(95**6)/(365*24*3600)
p=''
for i in out:
    p+=i
print(p)
print(t)
Нужно теперь сделать, чтобы у неё блок состоял из 16 бит? Написал как примерно должно быть, нужно разбить на младший и старший байт, но не работает как надо, код ниже

Python
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
data = str(input("Vvedite text:"))
key = str(input("vvedite key:"))
x = 0
spis = list(range(65536))
for i in range(65536):
    x = (x + spis[i] + ord(key[i % len(key)])) % 65536
    spis[i], spis[x] = spis[x], spis[i]
 
x = y = 0
s=''
i=len(data)
out = []
out1 = []
out2 = []
for char in data:
    x = (x + 1) % 65536
    y = (y + spis[x]) % 65536
    spis[x], spis[y] = spis[y], spis[x]
    out1.append(chr(ord(char) ^ spis[(spis[x] + spis[y]) % 256]))
    out2.append(chr(ord(char) ^ spis[(spis[x] + spis[y]) // 256]))
    out1.extend(out2)
p=''
for i in out1:
    p+=i
print(p)
Помогите пожалуйста разобраться
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.02.2019, 08:15
Ответы с готовыми решениями:

В центре каждого блока матрицы размером 3х3 поместить сумму других элементов этого же блока
Заполнить матрицу случайными числами. Разбить матрицу на квадраты размера 3х3. В центре каждого квадрата поместить сумму других элементов...

Число размером 128 бит
Бьюсь над реализацией алгоритма IDEA. Исходников на C# найти не удалось. Необходимо задать ключ размером 128 бит и потом его циклически...

Получить число размером в 7 бит
Привет ребята. Возникла у меня задачка, извлечь данные из архива. Загвоздка в том, что он использует некую специфическую форму записи...

1
0 / 0 / 0
Регистрация: 30.12.2015
Сообщений: 25
14.03.2019, 10:09  [ТС]
Сам решил эту задачу, код представлен ниже. Если кто желает можете более оптимизированные варианты добавить) буду благодарен)

Python
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
32
33
data = str(input("Vvedite text:"))
key = str(input("vvedite key:"))
x = 0
spis = list(range(65536))
for i in range(65536):
    x = (x + spis[i] + ord(key[i % len(key)])) % 65536
    spis[i], spis[x] = spis[x], spis[i]
x = y = 0
s=''
i=len(data)
out = []
out1 = []
for i in data:
    out.append(i)
if len(out)%2==0:
    for char in range(0, len(out), 2):
        x = (x + 1) % 65536
        y = (y + spis[x]) % 65536
        spis[x], spis[y] = spis[y], spis[x]
        out1.append(chr(ord(out[char]) ^ spis[(spis[x] + spis[y]) // 256]))
        out1.append(chr(ord(out[char+1]) ^ spis[(spis[x+1] + spis[y+1]) % 256]))
if len(out) % 2 == 1:
    for char in range(0, len(out), 2):
        x = (x + 1) % 65536
        y = (y + spis[x]) % 65536
        spis[x], spis[y] = spis[y], spis[x]
        out1.append(chr(ord(out[char]) ^ spis[(spis[x] + spis[y]) // 256]))
        if not char==(len(out)-1):
            out1.append(chr(ord(out[char+1]) ^ spis[(spis[x+1] + spis[y+1]) % 256]))
p=''
for i in out1:
    p+=i
print(p)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.03.2019, 10:09
Помогаю со студенческими работами здесь

Координаты размером больше 32 бит
Здравствуйте. Подскажите в каком направлении смотреть. Нужно отобразить график из массива, левой кнопкой мыши увеоичивать выделенную...

Битовые поля: определить переменную размером 1 бит
Мне нужно сделать переменную такого типа: FIS: .var db 1b ; эта метка размером с 1 бит? ;... end_FIS: Как сделать...

Чтение блока указанного количества бит
Есть файл, в нем например "qwerty", в бинарном виде: 100011101110111010100110010011100010111010011110 Мне нужно в цикле получать из него...

Поменять местами значения бит в заданном количестве пар бит. Номера бит в парах задаются с клавиатуры
1.Разработать алгоритм ввода с клавиатуры требуемых типов данных и показать на экране их внутреннее представление в двоичной системе...

Нужно написать программу сложения, вычитания, умножения, деления больших чисел - размером в 256 бит
Здравтсвуйте, уважаемые учатсники форума. У меня следующий вопрос. В инсте пишем на Фасме под Дос. Нужно написать программу сложения,...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru