Naoto,
I've seen routines where each character is expressed as an hex number with 2 ASCII chars (instead of a single char for example 0A for ASCII 10) but I am not sure I've seen the rotation that you mention. Could you elaborate on this?
>With XOR you're going to get non-printable characters (i.e. ASCII codes less than 32 and greater than 127). One easy way change you can make to a simple replacement cypher is to rotate the translation table with each character. Just remember to reset the translation table back to the initial state when decrypting.
Hector Correa