implements Hill cipher