logo

קיסר צופן בפייתון

במדריך זה, נחקור את אחת משיטות ההצפנה הנקראות Caesar Chipher. זה חלק מקריפטוגרפיה.

מבוא

בטכניקה זו, כל תו מוחלף באות במיקום מספר קבוע מסוים שהוא מאוחר יותר או לפני האלפבית. לדוגמה - אלפבית B מוחלף בשני עמדות למטה D. D יהפוך ל-F וכן הלאה. שיטה זו נקראת על שם דמויות חיכוך פופולריות יוליוס קיסר, שהשתמש בה כדי לתקשר עם פקידים.

יש אלגוריתם המשמש ליישם את זה. בואו נבין את הדברים הבאים.

תכונה של אלגוריתם צופן קיסר

אלגוריתם זה מורכב ממספר תכונות המובאות להלן.

  • טכניקה זו די פשוטה ליישום הצפנה.
  • כל טקסט מוחלף במספר הקבוע של מיקום למטה או למעלה עם האלפבית.
  • זהו סוג פשוט של צופן חלופי.

דרוש ערך של מספר שלם כדי להגדיר כל אחד מהטקסטים שהוזז למטה. ערך מספר שלם זה ידוע גם בשם ההיסט.

מחרוזת מצא את c++

אנו יכולים לייצג מושג זה באמצעות חשבון מודולרי על ידי התמרה תחילה של האות למספרים, לפי הסכמה, A = 0, B = 1, C = 2, D = 3…….. Z = 25.

ניתן להשתמש בנוסחה המתמטית הבאה כדי להעביר n אות.

איך לפענח?

הפענוח זהה להצפנה. אנו יכולים ליצור פונקציה שתשיג שינוי בנתיב ההפוך כדי לפענח את הטקסט המקורי. עם זאת, אנו יכולים להשתמש בתכונה המחזורית של הצופן תחת המודול.

Cipher(n) = De-cipher(26-n)

ניתן להשתמש באותה פונקציה לפענוח. במקום זאת, נשנה את ערך ה-shift כך ש-shifts = 26 - משמרת.

android process acore ממשיך לעצור
קיסר צופן בפייתון

בואו נבין את הדוגמה הבאה -

דוגמא -

 def encypt_func(txt, s): result = '' # transverse the plain txt for i in range(len(txt)): char = txt[i] # encypt_func uppercase characters in plain txt if (char.isupper()): result += chr((ord(char) + s - 64) % 26 + 65) # encypt_func lowercase characters in plain txt else: result += chr((ord(char) + s - 96) % 26 + 97) return result # check the above function txt = 'CEASER CIPHER EXAMPLE' s = 4 print('Plain txt : ' + txt) print('Shift pattern : ' + str(s)) print('Cipher: ' + encypt_func(txt, s)) 

תְפוּקָה:

אימוג'י תפוח באנדרואיד
 Plain txt : CEASER CIPHER EXAMPLE Shift pattern : 4 Cipher: HJFXJWsHNUMJWsJCFRUQJ 

הקוד לעיל חצה את התו בכל פעם. זה העביר את כל התו בהתאם לכלל בהתאם לנוהל ההצפנה והפענוח של הטקסט.

הגדרנו כמה סטים ספציפיים של עמדות שיצרו טקסט צופן.

הפרה באלגוריתם צופן קיסר

אנו יכולים לפרוץ את טקסט הצופן בדרכים שונות. אחת הדרכים היא טכניקת כוח אכזרית, שכולל ניסיון של כל מפתח פענוח אפשרי. טכניקה זו אינה כל כך קשה ואינה דורשת מאמץ רב.

בואו נבין את הדוגמה הבאה.

דוגמא -

 msg = &apos;rGMTLIVrHIQSGIEWIVGIEWIV&apos; #encrypted msg LETTERS = &apos;ABCDEFGHIJKLMNOPQRSTUVWXYZ&apos; for k in range(len(LETTERS)): transformation = &apos;&apos; for s in msg: if s in LETTERS: n = LETTERS.find(s) n = n - k if n <0: n="n" + len(letters) transformation="transformation" letters[n] else: s print('hacking k #%s: %s' % (k, transformation)) < pre> <p> <strong>Output:</strong> </p> <pre> Hacking k #25: rHNUMJWrIJRTHJFXJWHJFXJW </pre> <h2>Transposition Cipher</h2> <p>Transposition cipher algorithm is a technique where the alphabet order in the plaintext is rearranged to form a cipher text. This algorithm doesn&apos;t support the actual plain text alphabets.</p> <p>Let&apos;s understand this algorithm using an example.</p> <p> <strong>Example -</strong> </p> <p>We will take the simple example called columnar transposition cipher where we write the each character in the pain text in horizontal with specified alphabet width. The vertically written texts are cipher, which create a completely unlike cipher text.</p> <p>Let&apos;s take a plain text, and apply the simple columnar transposition technique as shown below.</p> <img src="//techcodeview.com/img/python-tutorial/89/caesar-cipher-python-2.webp" alt="Caesar Cipher in Python"> <p>We placed the plain text horizontally and the cipher text is created with vertical format as: <strong>hotnejpt.lao.lvi.</strong> To decrypt this, the receiver must use the same table to decrypt the cipher text to plain text.</p> <p> <strong>Code -</strong> </p> <p>Let&apos;s understand the following example.</p> <pre> def split_len(sequence, length): return [sequence[i:i + length] for i in range(0, len(sequence), length)] def encode(k, plaintxt): order = { int(val): n for n, val in enumerate(k) } ciphertext = &apos;&apos; for index in sorted(order.ks()): for part in split_len(plaintxt, len(k)): try:ciphertext += part[order[index]] except IndexError: continue return ciphertext print(encode(&apos;3214&apos;, &apos;HELLO&apos;)) </pre> <p> <strong>Explanation -</strong> </p> <p>In the above code, we have created a function named <strong>split_len(),</strong> which spitted the pain text character, placed in columnar or row format.</p> <p>The <strong>encode()</strong> method created the cipher text with a key specifying the number of columns, and we have printed each cipher text by reading through each column.</p> <h4>Note - The transposition technique is meant to be a significant improvement in crypto security. Cryptanalyst observed that re-encrypting the cipher text using same transposition cipher shows better security.</h4> <hr></0:>

צופן טרנספוזיציה

אלגוריתם צופן טרנספוזיציה הוא טכניקה שבה סדר האלפבית בטקסט הפשוט מסודר מחדש ליצירת טקסט צופן. אלגוריתם זה אינו תומך באלפבית הטקסט הפשוט בפועל.

boto3

בואו נבין את האלגוריתם הזה באמצעות דוגמה.

דוגמא -

ניקח את הדוגמה הפשוטה שנקראת צופן טרנספוזיציה עמודה שבה נכתוב את כל התו בטקסט הכאב בצורה אופקית עם רוחב אלפבית מוגדר. הטקסטים הכתובים אנכית הם צופנים, שיוצרים טקסט צופן שונה לחלוטין.

חוק חלוקתי אלגברה בוליאנית

בואו ניקח טקסט רגיל, וניישם את טכניקת הטרנספוזיציה העמודה הפשוטה כפי שמוצג להלן.

קיסר צופן בפייתון

מיקמנו את הטקסט הרגיל בצורה אופקית והטקסט הצופן נוצר בפורמט אנכי כמו: hotnejpt.lao.lvi. כדי לפענח זאת, על המקלט להשתמש באותה טבלה כדי לפענח את טקסט הצופן לטקסט רגיל.

קוד -

בואו נבין את הדוגמה הבאה.

 def split_len(sequence, length): return [sequence[i:i + length] for i in range(0, len(sequence), length)] def encode(k, plaintxt): order = { int(val): n for n, val in enumerate(k) } ciphertext = &apos;&apos; for index in sorted(order.ks()): for part in split_len(plaintxt, len(k)): try:ciphertext += part[order[index]] except IndexError: continue return ciphertext print(encode(&apos;3214&apos;, &apos;HELLO&apos;)) 

הסבר -

בקוד לעיל, יצרנו פונקציה בשם split_len(), אשר ירק את תו טקסט הכאב, שהוצב בפורמט עמודים או שורה.

ה לְהַצְפִּין() השיטה יצרה את טקסט הצופן עם מפתח המציין את מספר העמודות, והדפסנו כל טקסט צופן על ידי קריאה בכל עמודה.

הערה - טכניקת ההעברה נועדה להיות שיפור משמעותי באבטחת קריפטו. קריפטאנליטיקאי הבחין כי הצפנה מחדש של טקסט הצופן באמצעות אותו צופן טרנספוזיציה מראה אבטחה טובה יותר.