Найти - Пользователи
Полная версия: Помогите! Шифровка/дешифровка строки.
Начало » Центр помощи » Помогите! Шифровка/дешифровка строки.
1 2
rocky
Нужно сделать простенькую без всяких там регулярок шифровку/дешифровку строки.
Так, чтобы алгоритм был многоразовый, то есть строку пользователь сам вводил, но шифровка, например меняла каждый второй символ на предыдущий
типа: “большое спасибо!” на “обьлош епссаби!о” и обратно.
Помогите новичку, пожалуйста!
Singularity
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
для второго питона и юникодной символов надо вместо chr юзать unichr
rocky
rocky
без всяких там регулярок
обычная перестановка символов, наглядно нужно(
Singularity
import random
s = "большое спасибо!"
res = ""
for x in s.split():
    res += ''.join(random.sample(s,len(s)))
ajib6ept
Singularity
а дешифровать обратно можно?
bw
При чём здесь “всякие там регулярки”, может я чего-то не знаю? Что не так с первым примером?
Если используется `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
JOHN_16
предложу совсем иной подход
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�
большое спасибо
Singularity
https://github.com/mitsuhiko/itsdangerous
Master_Sergius
Если вдруг, захотите шифровку покруче - юзайте модуль pycrypto. Код всё равно займет пару строчек.
Ещё интересный вариант, но чтобы попроще - использовать табицу преобразования символов.
Например:

shifr = {'a':'-', 'b':1, 'c':'z'}
text = 'baba'
newtext = ''
for symbol in text:
    newtext += shifr[symbol]
print newtext
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB