首先你要明确
x^=y; y^=x; x^=y;与 temp=x;x=y;y=temp起相同
的作用x,y互换值,但不用中间变量将密码放进一个char数组,
然后对String中每个char与相对应的char进行异或运算存为密文,若密码中的char用完再循环使用,
解密时对密文中的每个char重新与相对应的密码中的char异或运算,得到原文
不过这样的算法有一个坏处,当原文有2个字符,而密码8位时,后6位密码就实效了,也就是后6位无论你输入什么,都可解出原文

解决方案 »

  1.   

    public void Password{
    public static void main(String[] args){
    String s=encode("My name is shine333", "sadfdk");
    System.out.println(s);
    System.out.println(decode(s,"mjc@2000"));
    }
    public static String encode(String txt, String password){
    char[] pwd=password.toCharArray();
    StringBuffer buf=new StringBuffer();
    for(int i=0;i<txt.length();i++){
    buf.append((char)(pwd[i%pwd.length]^txt.charAt(i)));
    }
    return buf.toString();
    } public static String decode(String txt, String password){
    char[] pwd=password.toCharArray();
    StringBuffer buf=new StringBuffer();
    for(int i=0;i<txt.length();i++){
    buf.append((char)(txt.charAt(i)^pwd[i%pwd.length]));
    }
    return buf.toString();
    }
    }
      

  2.   

    我想讓用戶輸入任意長度的字串,讓它輸出一個固定長度的加密字串,而且輸入的固定長度字串的長度是可以設置的,可以是10位,8位,16位。
    而且加密字串的字符要是1~0,A~Z。就像一些軟件的注冊機算法一樣,輸入用戶名,產生一個SN。