Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 29, 2013 20:56:54

rocky
Зарегистрирован: 2013-11-28
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите! Шифровка/дешифровка строки.

Нужно сделать простенькую без всяких там регулярок шифровку/дешифровку строки.
Так, чтобы алгоритм был многоразовый, то есть строку пользователь сам вводил, но шифровка, например меняла каждый второй символ на предыдущий
типа: “большое спасибо!” на “обьлош епссаби!о” и обратно.
Помогите новичку, пожалуйста!

Офлайн

#2 Ноя. 29, 2013 21:11:19

Singularity
Зарегистрирован: 2011-07-28
Сообщения: 1387
Репутация: +  75  -
Профиль   Отправить e-mail  

Помогите! Шифровка/дешифровка строки.

from __future__ import unicode_literals
def crypt(str,n=7):
      return "".join([chr(ord(x)+n) for x in str])
def decrypt(str,n=7):
      return "".join([chr(ord(x)-n) for x in str])

Отредактировано Singularity (Ноя. 29, 2013 21:14:32)

Офлайн

#3 Ноя. 29, 2013 21:28:51

Singularity
Зарегистрирован: 2011-07-28
Сообщения: 1387
Репутация: +  75  -
Профиль   Отправить e-mail  

Помогите! Шифровка/дешифровка строки.

для второго питона и юникодной символов надо вместо chr юзать unichr

Офлайн

#4 Ноя. 29, 2013 22:34:04

rocky
Зарегистрирован: 2013-11-28
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите! Шифровка/дешифровка строки.

rocky
без всяких там регулярок
обычная перестановка символов, наглядно нужно(

Офлайн

#5 Ноя. 29, 2013 22:40:15

Singularity
Зарегистрирован: 2011-07-28
Сообщения: 1387
Репутация: +  75  -
Профиль   Отправить e-mail  

Помогите! Шифровка/дешифровка строки.

import random
s = "большое спасибо!"
res = ""
for x in s.split():
    res += ''.join(random.sample(s,len(s)))

Отредактировано Singularity (Ноя. 29, 2013 22:42:14)

Офлайн

#6 Ноя. 30, 2013 05:22:08

ajib6ept
От: От: От: От: От: От: От: От:
Зарегистрирован: 2013-08-04
Сообщения: 297
Репутация: +  26  -
Профиль   Отправить e-mail  

Помогите! Шифровка/дешифровка строки.

Singularity
а дешифровать обратно можно?



_________________________
Python golden rule: Do not PEP 8 unto others; only PEP 8 thy self.
Don't let PEP 8 make you insanely intolerant of other people's code.

Офлайн

#7 Ноя. 30, 2013 06:58:32

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

Помогите! Шифровка/дешифровка строки.

При чём здесь “всякие там регулярки”, может я чего-то не знаю? Что не так с первым примером?
Если используется `random`, то `random.seed(…)` вам в помощь.
Как-то так:

import random
import operator as O
# константа, единая для шифрования и дешифрования
SEED = 42
def crypt(s):
    assert type(s) is unicode, type(s)
    random.seed(SEED)
    return u''.join(random.sample(s, len(s)))
def decrypt(d):
    assert type(d) is unicode, type(d)
    random.seed(SEED)
    i = random.sample(range(len(d)), len(d))
    return u''.join(map(O.itemgetter(1), sorted(zip(i, d))))

..bw



Отредактировано bw (Ноя. 30, 2013 07:01:21)

Офлайн

#8 Дек. 1, 2013 00:17:43

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Помогите! Шифровка/дешифровка строки.

предложу совсем иной подход

import zlib
s='большое спасибо'
s_c=zlib.compress(s)
s_d=zlib.decompress(s_c)
print s_c
print s_d
Результат:
x����¾
�/�\��[.6^�a��q(9�
большое спасибо



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#9 Дек. 1, 2013 10:00:54

Singularity
Зарегистрирован: 2011-07-28
Сообщения: 1387
Репутация: +  75  -
Профиль   Отправить e-mail  

Помогите! Шифровка/дешифровка строки.

Офлайн

#10 Дек. 1, 2013 21:45:26

Master_Sergius
Зарегистрирован: 2013-09-12
Сообщения: 271
Репутация: +  7  -
Профиль   Отправить e-mail  

Помогите! Шифровка/дешифровка строки.

Если вдруг, захотите шифровку покруче - юзайте модуль pycrypto. Код всё равно займет пару строчек.
Ещё интересный вариант, но чтобы попроще - использовать табицу преобразования символов.
Например:

shifr = {'a':'-', 'b':1, 'c':'z'}
text = 'baba'
newtext = ''
for symbol in text:
    newtext += shifr[symbol]
print newtext



———————————————————————————
Мой блог о семействе *nix: http://nixtravelling.blogspot.com/

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version