Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 4, 2011 17:03:52

Cthutq
От:
Зарегистрирован: 2011-01-17
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Криптография

Здравствуйте!
В институте дали следующее задание:
1.Написать функцию которая шифрует с помощью ключа выражение и выводит в массив
2.Написать функцию которая дешифрует с помощью того же ключа это выражение и выводит в массив вида
q w e r t y
1 4 9 8 0 4
a e i l p .
b f j m r ,
c g _ n s :
d h k o t ,


в таком же массиве прожка должна выводить шифрованное выражение, числа переставляются в порядке возрастания или убывания,не важно.



Офлайн

#2 Фев. 4, 2011 18:08:25

Zubchick
От:
Зарегистрирован: 2009-07-08
Сообщения: 613
Репутация: +  0  -
Профиль   Отправить e-mail  

Криптография

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

from random import randint
word = 'hello world' # len < 36

def key_word(passwd):
buf = 0
for i in passwd:
buf ^= ord(i)
return buf

def encrypt(word, passwd):
word = word[:35]
w36 = word + ''.join([chr(randint(0, 255)) for x in xrange(35 - len(word))]) + chr(len(word))
key = key_word(passwd)
arr = [[ord(x) ^ key for x in w36[i:i+6]] for i in xrange(0, 36, 6)]
return arr

def decrypt(arr, passwd):
key = key_word(passwd)
res = [chr(char ^ key) for row in arr for char in row]

stop = ord(res[-1])
return ''.join(res)[:stop]
In [102]: e = encrypt(word, '12s3')

In [103]: e
Out[103]:
[[43, 38, 47, 47, 44, 99],
[52, 44, 49, 47, 39, 33],
[253, 141, 161, 103, 230, 62],
[137, 86, 6, 62, 49, 33],
[251, 94, 40, 238, 188, 101],
[49, 43, 138, 23, 22, 72]]

In [104]: decrypt(e, '12s3')
Out[104]: 'hello world'



Отредактировано (Фев. 4, 2011 18:14:14)

Офлайн

#3 Фев. 4, 2011 19:23:48

Cthutq
От:
Зарегистрирован: 2011-01-17
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Криптография

Спасибо большое, Zubchick! :)
Правда я еще не знаю то ли это что нужно, нам в ВУЗе не выдали задания, писал по памяти…Вы не подскажете, есть ли такая же прожка на Си. Дело в том, нам преподавали Си, а столь экзотичный(в ВУЗе) язык как Питон могут не принять. а Си как таковой я плохо знаю, по крайней мере хуже чем Питон. :) Поэтому хотелось бы взглянуть на код в Си…



Отредактировано (Фев. 4, 2011 19:34:55)

Офлайн

#4 Фев. 4, 2011 20:17:44

Isem
От:
Зарегистрирован: 2010-08-27
Сообщения: 447
Репутация: +  7  -
Профиль   Отправить e-mail  

Криптография

Могу с уверенностью сказать, что такая прога на С есть, только лень гуглить.



Офлайн

#5 Фев. 4, 2011 20:32:29

Cthutq
От:
Зарегистрирован: 2011-01-17
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Криптография

Понял! Загуглю



Офлайн

#6 Фев. 5, 2011 08:24:51

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Криптография

Zubchick
Под такие сложные и необычные требования подходит только один известный мне алгоритм блочного шифрования, а именно алгоритм NVZ, от имени его автора Никиты Владимировича Зубкова.
Медленно перевожу взгляд на ник - это вы сам?



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#7 Фев. 5, 2011 12:09:44

Zubchick
От:
Зарегистрирован: 2009-07-08
Сообщения: 613
Репутация: +  0  -
Профиль   Отправить e-mail  

Криптография

PooH
Zubchick
Под такие сложные и необычные требования подходит только один известный мне алгоритм блочного шифрования, а именно алгоритм NVZ, от имени его автора Никиты Владимировича Зубкова.
Медленно перевожу взгляд на ник - это вы сам?
Ахаха, ну да ваще :D
Нравится алгоритм?)



Офлайн

#8 Фев. 7, 2011 18:06:46

Cthutq
От:
Зарегистрирован: 2011-01-17
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Криптография

Возник вопрос. В Python есть функция input() или raw_input(), смотря какая версия. Она не позволяет закрыться прожке сразу и ждет нажатия. Ф в Си Линукс есть подобное? Вроде в виндовом си было что-то типа getch(), но в линке такого нет. Есть ли альтернатива гетчу в Линукс?
З.Ы. Только дайте ответ. не надо пересылать в гугл - я там уже был. :)



Отредактировано (Фев. 7, 2011 18:09:19)

Офлайн

#9 Фев. 7, 2011 19:57:42

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Криптография

Да все это есть где угодно и getch() и cin>>str и scanf



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version