Skip to main content

Cipher engine in ruby

Recently i have started to learn ruby because it's the core language for the rails framework.
Here the cipher engine which uses the old caesar cipher algorithm,
i have used file concepts to read and write the both
encrypted and decrypted outputs to files.
We can also use other methods separately,

launch your irb then

load 'encryptor.rb'

make an instance of the Encryptor class by

e = Encryptor.new

to check all the available methods

e.methods

Here is the source

class Encryptor

    def cipher(rotation)
   chars = (' '..'z').to_a 
   rotated_chars = chars.rotate(rotation)
   Hash[chars.zip(rotated_chars)]
    end

    def encrypt_letter(char,rotation)
    cipher_for_rotate = cipher(rotation)
    cipher_for_rotate[char]
    end

    def decrypt_letter(char,rotation)
    decypher_rotate = cipher(-rotation)
    decypher_rotate[char]
    end

    #encryption method

    def encrypt(string,rotation)

    #split the string to letters
    letters = string.split("")

    #encrypt each letters and store it in array
    result = letters.collect do |letter|
        enc_char = encrypt_letter(letter,rotation)
    end

    #join the characters 
    result.join
    end

    #encrypt a file

    def encrypt_file(filename,rotation)
    #1. create the file handle to the input file
    f = File.open(filename, "r")

    #2. read the text of the input file
    text = f.read

    #3 encrypt the text
    encrypted = encrypt(text,rotation)

    #4 create a name for output file
    output = "#{filename}.encrypted"

    #5. create an output file handle
    out = File.open(output,"w")
    
    #6. write out the text
    out.write(encrypted)
    #7. close the file
    f.close
    out.close
    end

    def decrypt(string,rotation)

    #split the string to letters
    letters = string.split("")

    #decrypt each letters
    result = letters.collect do |letter|
        dec_char = decrypt_letter(letter,rotation)
    end
    #join
    result.join
    end

    def decrypt_file(filename,rotation)

    #create filehandler to read
    f = File.open(filename,"r")

    #read the cipher
    cipher = f.read

    #decrypt the cipher
    decrypted_msg = decrypt(cipher,rotation)

    #output filename
    output_filename = filename.gsub("encrypted","decrypted")

    #file handler to write
    out = File.open(output_filename,"w")

    #write contents
    out.write(decrypted_msg)

    #close
    out.close
    end
end



Comments

Popular posts from this blog

கட்டற்றமென்பொருள் பற்றிய மாத மின்இதழ்

உலகெங்கிலும் உள்ள தமிழ் மக்களுக்கு கணினிதொழில்நுட்பத்தை பற்றி அறிமுகம் செய்யும் கணியம் என்ற புதிய மாத மின்னிதழை வெளியிடுவதில் பெருமகிழ்ச்சி அடைகிறோம். கணினி கற்க ஆங்கிலம் தடையாக இருந்த காலம் மாறி தொழில்னுட்பங்கள் யாவும் தமிழில் பெருகும் இந்த காலத்தில் மென்பொருள் பற்றிய நுட்பங்களை தமிழில் வழங்குவதில் பெருமை கொள்கிறோம். இந்த இதழின் கட்டுரைகள் : கட்டற்ற மென்பொருள் லினக்ஸ் பயனர் குழு – ஓர் அறிமுகம் உபுண்டு நிறுவுதல்

படங்களை 700mbயில் தரமாக உருமாற்றம் செய்ய

நம்மிடம் இருக்கும் டிவிடிபடங்களில் பிடித்தவற்றை அவ்வப்போது பார்த்துக்கொள்ள நாம் அவற்றை தனியாகவோ அல்லது, இமேஜாகவோ காபி செய்து வைத்துக்கொள்வோம். அவை அதிக இடத்தை பிடித்துக்கொள்ளும் ஒவ்வொன்றும் படத்திற்கேற்ற மாதிரி 2 முதல் 4 ஜிபி வரை கொள்ளளவு கொண்டிருக்கும். எனவே நாம் அவற்றை அதன் அளவில் குறைத்து அதனை வேறு உருமாட்டில் சேமித்து வைத்துக்கொள்ள விரும்புவோம். அவ்வாறு அதனை மாற்றுவதால் நம்முடைய கணினியின் இடம் மிச்சமாகிறது, மேலும் எளிதாக அவற்றை நம் நண்பர்களுடன் பகிர்ந்து கொள்ளலாம். அளவில் குறைவாக இருப்பதால் இணையத்திலும் அவற்றை ஏற்றி அதனை மற்றவர்களுடன் எளிதாக பகிர்ந்துகொள்ளலாம். ஆனால் இதில் இருக்கும் ஒரு குறைபாடு அதன் தரம். அதில் மாற்றத்தை நன்றாக பார்க்கமுடியும். சில மாற்றப்பட்ட வீடியோக்கள் தரம் குறைவாக இருக்கும். வீடியோ கன்வர்ட்டர்களை பயன்படுத்தும் பலருக்கு இது நன்கு தெரிந்திருக்கும். இணையங்களில் டோரண்ட்களை பயன்படுத்தி படம் இறக்குபவர்க்கள் 700mb களில் தரமான படங்கள் இருப்பதை பார்த்திருக்கலாம். நாம் எவ்வாறு இதுபோன்று தரமாக வீடியோக்களை மாற்றுவது என்று பார்ப்போம்.

சிடி/டிவிடிகளை காப்பி செய்யாதீர்கள்.

நாம் பொதுவாக டிவிடி படங்களை நம்முடைய கணினிகளில் டிவிடி டிரைவ்களில் போட்டு பார்ப்பது பழக்கம். நாம் நண்பர்களிடம் இருந்தோ அல்லது வேறுயாரிடமாவது இருந்தோ படங்களை வாங்கி உடனே பார்த்துவிட்டு தருவதற்கு முடியவில்லை என்றால் நாம் படங்களை காப்பி செய்து அதனை நம் கணினீயில் சேமிப்போம். அவ்வாறு சேமித்த படங்களை டிவிடி டிரைவில் போட்டு பார்ப்பது போன்றே சௌகரியமாக பார்ப்பது என்பது இயலாது. ஒவ்வொரு fileஐயும் நாம் விடியோ ப்ளேயரில் திறக்க வேண்டும். அதில் பலவிதமான fileகள் இருக்கும். நாம் ஒவ்வொன்றாக திறந்து நாம் பார்க்க வேண்டிய அந்த படத்தை பார்ப்பதற்குள் நேரம் ஆகிவிடும். சில fileகள் ஒழுங்காக காப்பி ஆகியிருக்காது. சில டிவிடிக்கள் காப்பி ஆக மறுக்கும்.