Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 1
Регистрация: 28.09.2016
Сообщений: 31

Шифр Цезаря, шифрование акбаш, шифрование афины. Найдите ошибки

28.03.2018, 13:41. Показов 4588. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет, кто может помочь разобраться в этих трёх кодах, нужно найти ошибки, если они есть.
Нужно к сегодняшнему вечеру, выручайте.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#цезарь
message = "Проверка~"
 
# ключ сдвиг
key = 13
 
# что нужно сдлеать
mode = 'encrypt' # 'encrypt'  'decrypt'
 
 
LETTERS = ' !#$%&+,.0123456789:;<=>?@АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ^_`абвгдеёжзийклмнопрстуфхцчшщъыьэюя{|}~'
 
# хранится сообщение
translated = ''
 
# начинаем шифровать, ну или наоборот
for symbol in message:
    if symbol in LETTERS:
        num = LETTERS.find(symbol)
        if mode == 'encrypt':
            num = num + key
        elif mode == 'decrypt':
            num = num - key
        if num >= len(LETTERS):
            num = num - len(LETTERS)
        elif num < 0:
            num = num + len(LETTERS)
 
 
        translated = translated + LETTERS[num]
 
    else:
        translated = translated + symbol
 
print(translated)
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
alfavit = ' ,.!?АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ'
revAlf = 'ЯЮЭЬЫЪЩШЧЦХФУТСРПОНМЛКЙИЗЖЁЕДГВБА?!., '
#alfavit = [' ', ',', '.', '!','?','А','Б','В','Г','Д','Е','Ё','Ж','З','И','Й','К','Л','М','Н','О','П','Р','С','Т','У','Ф','Х','Ц','Ч','Ш','Щ','Ъ','Ы','Ь','Э','Ю','Я']
#revAlfavit = ['?', '!', '.', ',',' ','Я','Ю','Э','Ь','Ы','Ъ','Щ','Ш','Ч','Ц','Х','Ф','У','Т','С','Р','П','О','Н','М','Л','К','Й','И','З','Ж','Ё','Е','Д','Г','В','Б','А']
 
A= input("Введите текст: ")
#A = 'КАРЛ У КЛАРЫ УКРАК КОРАЛЛЫ, А !!!!! КЛАРА НЕТ!,?????'
#print(A)
B = []
V = []
for i in range(len(A)):
    for j in range (len(alfavit)):
        if A[i] == alfavit[j]:
            B.append(revAlf[j])
 
print(''.join(B))
 
 
for i in range (len(B)):
    for j in range (len(alfavit)):
        if B[i]== revAlf[j]:
            V.append(alfavit[j])
print (''.join(V))
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# афина шифр
import sys, pyperclip, cryptomath, random
SYMBOLS = """ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~"""
 
 
def main():
    myMessage = "This is a secret message form my mind!" #наше сообщение
    myKey = 2525
    myMode = 'encrypt' # 'encrypt' 'decrypt'
 
    if myMode == 'encrypt':
        translated = encryptMessage(myKey, myMessage)
    elif myMode == 'decrypt':
        translated = decryptMessage(myKey, myMessage)
    print('Использованный ключ: %s' % (myKey))
    print('%sed текст:' % (myMode.title()))
    print(translated)
    pyperclip.copy(translated)
    print('Ваш %sed текст скопирован в буфер обмена.' % (myMode))
 
 
def getKeyParts(key):
    keyA = key // len(SYMBOLS)
    keyB = key % len(SYMBOLS)
    return (keyA, keyB)
 
 
def checkKeys(keyA, keyB, mode): #проверка ключа
    if keyA == 1 and mode == 'encrypt':
        sys.exit('The affine cipher becomes incredibly weak when key A is set to 1. Choose a different key.')
 
    if keyB == 0 and mode == 'encrypt':
        sys.exit('The affine cipher becomes incredibly weak when key B is set to 0. Choose a different key.')
    if keyA < 0 or keyB < 0 or keyB > len(SYMBOLS) - 1:
        sys.exit('Key A must be greater than 0 and Key B must be between 0 and %s.' % (len(SYMBOLS) - 1))
    if cryptomath.gcd(keyA, len(SYMBOLS)) != 1:
        sys.exit('Key A (%s) and the symbol set size (%s) are not relatively prime. Choose a different key.' % (keyA, len(SYMBOLS)))
 
 
def encryptMessage(key, message):
    keyA, keyB = getKeyParts(key)
    checkKeys(keyA, keyB, 'encrypt')
    ciphertext = ''
    for symbol in message:
        if symbol in SYMBOLS:
            # encrypt this symbol
            symIndex = SYMBOLS.find(symbol)
            ciphertext += SYMBOLS[(symIndex * keyA + keyB) % len(SYMBOLS)]
        else:
            ciphertext += symbol # just append this symbol unencrypted
    return ciphertext
 
 
def decryptMessage(key, message):
    keyA, keyB = getKeyParts(key)
    checkKeys(keyA, keyB, 'decrypt')
    plaintext = ''
    modInverseOfKeyA = cryptomath.findModInverse(keyA, len(SYMBOLS))
 
    for symbol in message:
        if symbol in SYMBOLS:
        # decrypt this symbol
            symIndex = SYMBOLS.find(symbol)
            plaintext += SYMBOLS[(symIndex - keyB) * modInverseOfKeyA % len(SYMBOLS)]
        else:
            plaintext += symbol # just append this symbol undecrypted
    return plaintext
 
 
def getRandomKey():
    while True:
        keyA = random.randint(2, len(SYMBOLS))
        keyB = random.randint(2, len(SYMBOLS))
 
        if cryptomath.gcd(keyA, len(SYMBOLS)) == 1:
            return keyA * len(SYMBOLS) + keyB
 
 
# If affineCipher.py is run (instead of imported as a module) call
 # the main() function.
if __name__ == '__main__':
    main()
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.03.2018, 13:41
Ответы с готовыми решениями:

Шифр Цезаря. Шифрование
z = int(input()) alph = n = input().strip() for length in n: print(alph, end='') Подскажите пожалуйста, что означает...

Шифрование/дешифрование текста: шифр Цезаря
С помощью метода «Шифра Цезаря» создать алгоритм шифрования и дешифрования сообщения, изначально написанного на русском языке и...

Шифр Цезаря и Шифрование с формированием алфавита замены на Питон без встроенных функций
Необходимо реализовать следующие методы шифрования. 1. Шифр Цезаря 2. Шифрование с формированием алфавита замены

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.03.2018, 13:41
Помогаю со студенческими работами здесь

Шифрование сдвигами (шифр Цезаря)
Необходимо сделать меню, к которому можно обращаться несколько раз. Каждое задание делать в виде отдельной функции. К каждой функции...

Шифрование файлов (шифр Цезаря)
Здравствуйте. Программа должна открывать файл с шифром,а расшифровку записывать в пустой файл. Программа ошибку не выдает. Но, файлы...

Шифрование/дешифрование текста: шифр Цезаря
Задание: С помощью метода «Шифра Цезаря» создать алгоритм шифрования и дешифрования сообщения, изначально написанного на русском языке и...

Шифрование/дешифрование текста: шифр Цезаря
Задали дома сделать шифр Цезаря , проблема в том ,что объяснили лишь ,что делать через char и все. Может кто-то сможет подсказать по какому...

Шифрование и дешифрование текста (шифр Цезаря)
Напишите программу для шифрования и дешифрования текста, используя шифр Цезаря, который является простым типом шифрования замещения. В...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru