Мазмуну:

Pythonдогу Цезарь шифр программасы: 4 кадам
Pythonдогу Цезарь шифр программасы: 4 кадам

Video: Pythonдогу Цезарь шифр программасы: 4 кадам

Video: Pythonдогу Цезарь шифр программасы: 4 кадам
Video: Python! Tuples 2024, Ноябрь
Anonim
Pythonдогу Цезарь шифр программасы
Pythonдогу Цезарь шифр программасы

Цезардык шифр - байыркы жана кеңири колдонулган шифр, ал шифрлөөгө жана чечмеленүүгө оңой. Бул таптакыр жаңы алфавитти түзүү үчүн алфавит тамгаларын которуу менен иштейт (ABCDEF 4 тамганы алмаштырып, EFGHIJ болуп калат).

Цезарь шифрлери бул жерде эң коопсуз шифрлер эмес, бирок жашыруун эскертүүлөрдү берүү же сырсөздөрдү бир аз күчтүү кылуу сыяктуу кичинекей иштер үчүн жакшы. Кодду чечмелөө чынында оңой, бирок эгерде сизде атайын алфавит жатталбаса, аны шифрлөө түйшүктүү болушу мүмкүн.

Бул процессти жеңилдетүү үчүн биз компьютерлердин күчүн, тагыраак айтканда Python программалоо тилин колдоно алабыз.

Бул Instructable сизге буйругуңуз боюнча билдирүүлөрдү шифрге айландыруучу программаны кантип түзүүнү көрсөтөт.

Жабдуулар

Сизге бир гана Python тилмечи керек: IDLE, Pycharm жана Thonny - бул жакшы, бекер варианттар (мен Pycharm колдонгом)

Python боюнча негизги билим

1 -кадам: өзгөрмөлөрдү жарыялоо жана киргизүү

Өзгөрмөлөрдү жарыялоо жана киргизүү
Өзгөрмөлөрдү жарыялоо жана киргизүү

Алфавиттин, билдирүүнүн, жылыштын ж.б саптарын (тексттерин) чынында сактоо үчүн, биз өзгөрмөлөрдү колдонушубуз керек. Биз "алфавит", "partialOne", "partialTwo" жана "newAlphabet" өзгөрмөлөрүн жарыялоо менен баштайбыз. Мен Camel Caseдеги өзгөрмөлөрдүн аттарын кодума жаздым (биринчи сөз - кичине жана экинчи чоң тамга), бирок сиз аны коддун калган бөлүгүндө өзгөртүүнү унутпасаңыз, каалаган жол менен жаза аласыз.. Алфавиттин өзгөрмөсү "abcdefghijklmnopqrstuvwxyz" маанисине ээ. Башка өзгөрмөлөрдүн баары "" деп коюлган, бул бош сап, анткени бизде алардын мааниси жок.

Бул эмне кылып жатат, биз жарым -жартылай системаны орнотуп жатабыз, аны биз чынында эле жылышуу үчүн колдонобуз. Бул кийинки кадамда түшүндүрүлөт.

Ушундан кийин, биз билдирүүнү алып, колдонуучудан маанини которушубуз керек. Бул үчүн биз киргизүү функциясын колдонобуз. Коддун бул бөлүгү колдонуучудан кабарды жана номерди алфавитти которуусун сурайт.

КОД:

алфавит = "abcdefghijklmnopqrstuvwxyz"

partialOne = ""

partialTwo = ""

newAlphabet = ""

message = input ("Которгусу келген билдирүүнү киргизиңиз:").lower ()

key = int (киргизүү ("Өткөргүңүз келген номерди киргизиңиз:")))

2 -кадам: Жаңы алфавитти түзүү

Жаңы алфавитти түзүү
Жаңы алфавитти түзүү

Эми жылдырылган алфавитти түзүү. Бул үчүн биз жарым -жартылай системаны колдонобуз. Жарым -жартылай система - бул жерде компьютер алфавитти эки бөлүккө бөлөт (бөлүктөрдү айтуунун кооз ыкмасы). Биринчи бөлүк, бирок сиз программага өтүүнү айттыңыз, ал эми экинчиси - калган. Компьютер бөлүктөрүн алмаштырат. Код дал ушундай кылып жатат, эгер биринчи нөөмөт менен бирге, эгерде жылыш 0 болсо, анда жаңы алфавит менен эски алфавит бирдей, анткени сиз эч нерсени алмаштырбайсыз.

Мисалы:

Ырааттуулугу - 123456789

Жарым -жартылай - 123; Экинчи бөлүк - 456789

Жаңы ырааттуулук - 456789123

КОД:

эгер ачкыч == 0:

newAlphabet = алфавит

elif key> 0:

partialOne = алфавит [: ачкыч]

partialTwo = алфавит [ачкыч:]

newAlphabet = partialTwo + partialOne

башка:

partialOne = алфавит [:(26 + баскычы)]

partialTwo = алфавит [(26 + баскыч):]

newAlphabet = partialTwo + partialOne

3 -кадам: Кабарды жылдыруу

Кабарды которуу
Кабарды которуу

Азыр бизде алфавит жана жаңы алфавит бар. Кабарды кодго которуу гана калды.

Биринчиден, биз жаңы өзгөрмөнү коюп, аны "шифрленген" деп атап, "" деп койдук. Андан кийин биз чындап эле татаал фор-циклди жазабыз, ал билдирүүдөгү ар бир тамганы текшерет жана аны жаңы тамгага которот. Ал натыйжаны чыгарат жана ал жерде сизде, ийгиликтүү конверсияланган код!

КОД:

encrypted = "" "message_index" диапазонунда (0, len (message)):

эгер билдирүү [message_index] == "":

шифрленген+= ""

диапазондогу alpha_index үчүн (0, len (newAlphabet)):

эгер билдирүү [message_index] == алфавит [alpha_index]:

шифрленген+= жаңыАлфавит [алфавит_индикси]

басып чыгаруу (шифрленген)

4 -кадам: Кошумча

Кошумча
Кошумча
Кошумча
Кошумча

Код файлы тиркелет.

Сунушталууда: