Crytography - Solution (long)