From 8bc9187ac9574c0d1b740278e637935d4eeb4c63 Mon Sep 17 00:00:00 2001 From: Oleg Kazmin <76499054+OlegAtor777@users.noreply.github.com> Date: Thu, 11 Nov 2021 12:33:11 +0300 Subject: [PATCH] Add files via upload --- ecryption.py | 53 +++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 50 insertions(+), 3 deletions(-) diff --git a/ecryption.py b/ecryption.py index bfc3f5c..d0cb66f 100644 --- a/ecryption.py +++ b/ecryption.py @@ -1,4 +1,51 @@ -def encrypt(k, m): - return ''.join(map(chr, [x + k for x in map(ord, m)])) +from collections import Counter +from random import randint +N = 65536 -print(encrypt(2, 'Hello!')) \ No newline at end of file + +def encrypt_caesar(k, m): + offset_ords = [(x + k)%N for x in map(ord, m)] + return ''.join(map(chr, offset_ords)) + + +def decrypt_caesar(k, m): + offset_ords = [(x - k)%N for x in map(ord, m)] + return ''.join(map(chr, offset_ords)) + + +def hack(m): + most_common = Counter(m).most_common()[0][0] + key = ord(most_common) - ord(' ') + return decrypt_caesar(key, m) + + +# шифр вернама +def generate_key(length): + return [randint(0,26) for _ in range(length)] + +def xor(char, key): + return chr(ord(char)^key) + +def encrypt_v(text): + key = generate_key(len(text)) + return ''.join([xor(text[i], key[i]) for i in range(len(text))]), key + +def decrypt_v(cryptedtext, key): + return ''.join([xor(cryptedtext[i], key[i]) for i in range(len(cryptedtext))]) + +TEXT_TO_CHECK = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.' + +key = int(input('Введите ключ для Цезаря: ')) +text = encrypt_caesar(key, TEXT_TO_CHECK) +print('Зашифрованный текст Цезаря:', text) +print('---------------------------------------------------------------------------') +print('Расшифрованный текст Цезаря:', decrypt_caesar(key, text)) +print('-----------------------------------------------------------------------------') +print('Взломанный текст Цезаря:', hack(text)) +print('------------------------------------------------------------------------------') +encrypt_v, key = encrypt_v(TEXT_TO_CHECK) +print('Зашифрованный шифром Вернама текст: ', encrypt_v) +print('------------------------------------------------------------------------------') +decrypt_v = decrypt_v(encrypt_v, key) +print('Расшифрованный текст: ', decrypt_v) +print('------------------------------------------------------------------------------') \ No newline at end of file