add gcd, clean up shift_cipher