Singh’s examples in book seem easy to comprehend. The methods are relatively straightforward and codes were broken within few pages of the book. However, in practice the process of cryptanalysis is usually much more complicated. I believe there are three reasons for that.
First of all, the cryptanalyst has no idea what type of code is being used. Surely a frequency analysis could narrow the answer: if frequency is equal for all letters it’s probably a Vigenère cipher; if frequencies don’t change it’s probably a transposition cipher; if frequencies follow the same pattern as English alphabets it’s probably some type of shift cipher. However, those are not the only types of ciphers that can be utilized, and even if we manage to narrow it down to a few of them, they might each require different cryptanalysis methods, and that takes time.
Secondly, cryptographers could mix unimportant information with the actual content. For instance, they could encode a string of random letters and hide the real message in between them. For a cryptanalyst, if the bunk of the message doesn’t make sense, he/she would assume the analysis is wrong and resort to the next solution.
Last but not least, it’s hard to guess. In a lot of the examples in the book, the author takes several guesses and one of them yielded the right result. When we are doing cryptanalysis, sometimes it takes a dozen guesses to find the right answer. Sometimes we are not finding the right piece of code to guess upon. All of which takes up a lot of time and in the world of cryptanalysis, time is everything.