On Sat, Feb 4, 2012 at 18:43, John Merlino <[email protected]> wrote:

> The % is modulus (remainder) operator and ^ is bitwise.

Specifically, bitwise XOR.  Very important to know what operation is
being done....  :-)

> But why are the ^ and % operators used here:
>
> def encrypt(reader, writer)
>    key_index = 0
>    while not reader.eof?
>      clear_char = reader.getc
>      encrypted_char = clear_char ^ @key[key_index]
>      writer.putc(encrypted_char)
>      key_index = (key_index + 1) % @key.size
>    end
>  end

You're using ^ because you are encrypting each char by doing a bitwise
XOR with the corresponding byte of the key.

You're using % because the the key, in this case, is of finite length.
 If your plaintext is longer, then you have to repeat the key, i.e.,
start over at the beginning of the key but keep going within the
plaintext.  (Or of course come up with a new key, and find some way to
tell the correspondent what the new key is, but that's a whole 'nother
problem.)

Google things like basic cryptography, introduction to cryptography,
cryptography tutorial, etc. for more info.

-Dave

-- 
Dave Aronson:  Available Cleared Ruby on Rails Freelancer
(NoVa/DC/Remote) -- see www.DaveAronson.com, and blogs at
www.Codosaur.us, www.Dare2XL.com, www.RecruitingRants.com

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en.

Reply via email to