Python: двухстороннее буквенно-цифровое шифрование

Я использую Python 2.7 . У меня есть алфавитно-цифровая строка, на которой я хочу выполнить шифрование / дешифрование. Все, что я делаю, должно оставаться в двух направлениях, и результат должен быть буквенно-цифровым.

Например:

str = 'ma6546fbd' encrypted_data = encrypt_function(str) decrypted_data = decrypt_function(encrypted_data) print decrypted_data # I get 'ma6546fbd' 

Что я сделал:

Я написал функцию

 def xor_crypt_string(data, key): return ''.join(chr(ord(x) ^ ord(y)) for (x,y) in izip(data, cycle(key))) 

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

  • Может ли Django ORM выполнить ORDER BY по определенному значению столбца?
  • Python: Как проверить, открыт ли сетевой порт на linux?
  • Нет модуля с именем «virtualenvwrapper»
  • построение орбитальных траекторий в python
  • Установка файла pythonstartup
  • Функция libVLC media_player_new () вызывает ошибку сегментации
  • Получить внутренний HTML элемента в lxml
  • PEP8: конфликт между W292 и W391
  • 2 Solutions collect form web for “Python: двухстороннее буквенно-цифровое шифрование”

    Если вы хотите серьезное шифрование (прочитайте нерушимый), я бы использовал AES из pycrypto что-то вроде этого.

     >>> from Crypto.Cipher import AES >>> from Crypto import Random >>> key = b'Sixteen byte key' >>> iv = Random.new().read(AES.block_size) >>> cipher = AES.new(key, AES.MODE_CFB, iv) >>> msg = iv + cipher.encrypt(b'Attack at dawn') >>> msg.encode("hex") 'e10e096aabff9db382abe8d704404995a7b64d72a4e1b9e5208912d206c4' 

    Это ваше сообщение о ascii. Теперь декодируем сообщение, подобное этому

     >>> recv='e10e096aabff9db382abe8d704404995a7b64d72a4e1b9e5208912d206c4' >>> cipher.decrypt(recv.decode("hex"))[len(iv):] 'Attack at dawn' >>> 

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

    Насколько строго соответствует буквенно-цифровое требование?

    Как насчет base64, кодирующего результат вашей существующей функции шифрования? В конце концов вы можете получить несколько пропущенных символов «=», но вы можете обрезать их и вычислить и обработать дополнительное дополнение.

     def xor_crypt_string(plaintext, key): ciphertext = ''.join(chr(ord(x) ^ ord(y)) for (x,y) in izip(plaintext, cycle(key))) return ciphertext.encode('base64') def xor_decrypt_string(ciphertext, key): ciphertext = ciphertext.decode('base64') return ''.join(chr(ord(x) ^ ord(y)) for (x,y) in izip(ciphertext, cycle(key))) 
    Interesting Posts

    Как передать переменную Bash на Python?

    Сортировка по нескольким параметрам в pyes и elasticsearch

    Escape SQL «LIKE» значение для Postgres с psycopg2

    Неожиданный EOF Python при разборе

    Программа Python не выполняется за пределами первого пользовательского ввода

    python: преобразовать PNG-изображение base64 в jpg

    Python: отображение Dict of Dicts с использованием дерева пользовательского интерфейса для ключей и любого другого виджета для значений

    Selenium в Python на Mac – исполняемый файл Geckodriver должен находиться в PATH

    индивидуальное сравнение для встроенных контейнеров

    Получить индексы N наивысших значений в ndarray

    Ошибка номера версии Hotmail SSL3 с использованием smtp

    Форматирование строки python Столбцы в строке

    бинарные данные между python и c ++

    Получение данных с Python с помощью Cherrypy и jQuery / AJAX

    Каков наилучший вариант для очереди задач (Python 3) в Windows теперь, когда Celery 4 отказался от поддержки Windows?

    Python - лучший язык программирования в мире.