என்கிரிப்சன் என்பது ஒரு குறிப்பிட்ட செய்தியை பிறர் படித்துஅர்த்தம் புரியாவண்ணம் அதனுடன் குறிப்பிட்ட அளவு கூட்டுதல் ஆகும்.
உதாரணமாக 'hello' என்றொரு செய்தி இருப்பதாக வைத்துக் கொள்வோம். இதனுடன் 5 என்ற எண்ணிக்கை சிஃப்ட் செய்து 'mjqqt' என்று என்கிரிப்ட் செய்யும்.
'h'+5='m'
'e'+5='j'
'l'+5='q'
'l'+5='q'
'o'+5='t'
இதே செய்தியை டிகிரிப்ட் செய்ய வேண்டுமென்றால் அதே எண்ணிக்கையில் அதிலிருந்து கழித்தல் வேண்டும்.
உதாரணமாக 'mjqqt' என்பது டிகோட் செய்யப்பட்டு 'hello' என்று மாறும்.
அதற்கான நிரல்:
alphabets=['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x',
'y','z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x',
'y','z']
direction=input("enter 'encode' to encrypt or 'decode' to
decrypt")
text=input("enter text").lower()
shift=int(input("Enter no of characters to shift"))
def encrypt(plain_text,shift_amount):
ciphertext='';
for letter in plain_text:
position=alphabets.index(letter)
new_position=position+shift_amount
new_letter=alphabets[new_position]
ciphertext+=new_letter
print(f"The encoded string is {ciphertext} ")
def decrypt(ciphertext,shift_amount):
plain_text=''
for letter in ciphertext:
position=alphabets.index(letter)
new_position=position-shift_amount
new_letter=alphabets[new_position]
plain_text+=new_letter
print(f"The decoded string is {plain_text}")
if direction=="encode":
encrypt(plain_text=text,shift_amount=shift)
elif direction=="decode":
decrypt(ciphertext=text,
shift_amount=shift)
மேலே உள்ள நிரலில் alphabets என்றொரு லிஸ்ட் உள்ளது இது 'a' முதல்
'z' வரை இரண்டு தடவை உள்ளது.
அடுத்து செய்தியானது என்கோட் செய்ய வேண்டுமா அல்லது டிகோட் செய்ய வேண்டுமா எனக் கேட்கின்றது.
அடுத்து எந்த செய்தி என்று கேட்கப்படுகின்றது.
அடுத்து எத்தனை எண்ணிக்கையில் கேரக்டர்கள் ஷிஃப்ட் செய்யப்பட வேண்டும் எனக் கேட்கின்றது.
என்க்ரிப்ட் செய்வதற்கும் டிகிரிப்ட் செய்வதற்கும் தனித்தனியே ஃபங்க்சன்கள் எழுதப்பட்டுள்ளன.
என்கிரிப்ட்ஃபங்க்சனில் செய்தியும் ஷிஃப்ட் எண்ணிக்கையும் பாஸ் செய்யப்படுகின்றது.
இது செய்தியில் உள்ள ஒவ்வொரு லெட்டெர் ஆக இடரேட் செய்யப்படுகின்றது. முதலில் அதற்கும் முன் ஒரு சைபெர்டெக்ஸ்ட் என்ற ஸ்ட்ரிங்க் வேரியபிள் அறிவிக்கப்பட்டுள்ளது. லூப்பிற்குள் அந்த லெட்டெர் ஆனது ஆல்ப்பெட்ஸ் லிஸ்டில் எந்த இண்டெக்சில் உள்ளது என்பது அறியப்படுகின்றது. அவ்வாறு அதன் இண்டெக்ஸ் அறிந்த பிறகு அந்த இண்டெக்ஸ் உடன் ஷிஃப்ட் எண்ணிக்கை கேரக்டர்கள் கூட்டப்படுகின்றது. இப்பொழுது புதிய இண்டெக்சில் அல்பபெட்ஸ் லிஸ்டில் என்ன கேரக்டர் உள்ளது என்று அறியப்பட்டு ஒவ்வொரு கேரக்டர் ஆக சைபெர்டெக்ஸ்ட் உடன் சேர்க்கப்படுகின்றது.
ஃபங்க்சனின் இறுதியில் என்க்ரிப்ட் செய்யப்பட்ட செய்தி காட்சிபடுத்தப்படுகின்றது.
டிகிரிப்சன் ஃபங்க்சனும் இதே முறையில் தான் செயற்படுகின்றது. ஒரே ஒரு வித்தியாசம் ஒவ்வொரு கேரக்டர்களும் அதன் இண்டெக்சில் இருந்து ஷிஃப்ட் எண்ணிக்கையில் கூட்டபடுவதற்கு பதிலாக அதில் இருந்து கழிக்கப்படுகின்றது.
வெளியீடு:
C:\Users\Muthu\PycharmProjects\pythonProject\venv\Scripts\python.exe C:/Users/Muthu/PycharmProjects/pythonProject/caesercipher.py
enter 'encode' to encrypt or 'decode' to decryptencode
enter text hello
Enter no of characters to shift 5
The encoded string is mjqqt
நன்றி
முத்து கார்த்திகேயன், மதுரை.
No comments:
Post a Comment