Saturday, July 15, 2006

A problem from cryptography[S]

This field deals with converting plain text into cipher text ( un understandable ) using a mathematical construct to keep the information secure.A monoalplabetic substitution of +3 applied on the plain text "ram" gives cipher text "udp".Here 'mono alphabetic substitution' is the algorithm and '+3' is the key.
by knowing the algorithm but not the key can we retrieve plain text from cipher text ? [S]

7 comments:

Anonymous said...

Given long enough encrypted text, and assuming that the characters in the original text are following some probability distribution (e.g. 'e' appears maximum number of times in regular english), sure one can decipher the code.

Unknown said...

I think u can. I'll write a program that does it, and mail it 2 u

vhasus said...

This cipher is hard to break if the language u are talking about has a script which are created the fly. (Mandarin chinese comes foremost to my mind, I have heard the script is pictorial partly).
If you are talking about any of the languages with a fixed/finite script(as in finite number of alphabets), any dektop PC will blow the lid off this cipher effortlessly, since it only calls for brute force appliction of the same cipher over the encrypted text.(BTW this is the second version of my comment, the first version was lost to IE's madness. Richard Stallman rules man.)

talegari (ತಾಳೆಗರಿ) said...

MR Ubiquity,
Would you give me the practical way of blowing off the lid ?

vhasus said...

The algorithm is
"Take the cipher text". Take the number of alphabets in its script. Let this number be "N". Number the alphabets starting from 1. Start a loop over a varible i which takes values form 1 to N . Replace each element in the cipher text with an index k in the script(which you obtained after numbering) by (i + k) of the script and then see if it makes sense.
and so on and so forth

talegari (ತಾಳೆಗರಿ) said...

Can we automate instead of checking whether it makes sense everytime ?

vhasus said...

What is there ? Just use a dictionary attack.
I mean, choose only those combinations which have maximum
number of entries that exist in a standard dictionary of
that language.