首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

一个关于加密、解密的有关问题

2012-01-01 
一个关于加密、解密的问题。package thbpublic class ceshi1 {public static void main(String[] args){cha

一个关于加密、解密的问题。
package thb;

public class ceshi1 {
public static void main(String[] args){
char a1='十',a2='点';
char secret='9'; //为什么secret只能取值是(0~9),大于9以后就报错???
a1=(char)(a1^secret);
a2=(char)(a2^secret);
System.out.println("密文:"+a1+a2);//为什么+a1+a2前面一定要有点东西呢???单独的用(+a1+a2)显示的是数字也不报错。
a1=(char)(a1^secret);
a2=(char)(a2^secret);
System.out.println("原文:"+a1+a2);
}

}
本人菜鸟一个希望GGJJ给与解答,很是不理解。

[解决办法]
你的a1、a2是char

当你注释的地方前面加上一个字符串的时候,编译器会把a1、a2转换为String,然后进行连接操作,但是当你前面没加字符串的时候,编译器就只会把a1、a2转换为int型数据进行相加然后输出
[解决办法]
你的问题,楼上两位都回答得很清楚了,如果想要加密字符串的话,可以参考下面的代码。

Java code
public class Test {    public static void main(String[] args) {        String plainText = "walykyy(斌斌),walykyy(斌斌)";                // 加密         String crypt = encrypt(plainText, 1233210);        System.out.println(crypt);                // 解密         String plain = encrypt(crypt, 1233210);        System.out.println(plain);    }        private static String encrypt(String plain, int key) {        char[] chars = plain.toCharArray();        char[] crypt = new char[chars.length];        for(int i = 0, k = chars.length; i < k; i++) {            // 随便扰乱一下,为了让相同的字符,出现密文也不同            key ^= key * key + i;              // 这里之所以要强转成char,是因为对于char来说,^计算出来的结果是int            // int 的范围要大于char,所以就要强转(PS:char也是一个数值,对应着              // 一个字符的Unicode值。char占两个字节,从0~65535)。              crypt[i] = (char)(chars[i] ^ key);                  }        return new String(crypt);    }} 

热点排行
Bad Request.