代码:import java.io.*; //引入io包public class TxtEncrypt {
    public static void main(String args[]) { //主函数
        System.out.println("输入一个字符作为密钥:");
        char k = '0';
        try {
            k = (char) System.in.read(); //等待用户输入一个字符作为密钥
        } catch (IOException ex) {
        }
        File fileOne = new File("155190.txt"), //要加密的文件
                       fileTwo = new File("hello.secret"); //加密后的文件
        char b[] = new char[100]; //缓冲字符数组
        try {
            FileReader in = new FileReader(fileOne); //创建读文件流,也可以叫文件输入流
            FileWriter out = new FileWriter(fileTwo); //创建写文件流,也可以叫文件输出流
            int n = -1; //定义变量,存放read读的返回值
            while ((n = in.read(b)) != -1) { //如果变量n为-1,则文件到达末尾
                for (int i = 0; i < n; i++) { //循环,从字符数组b中读取字符
                    b[i] = (char) (b[i] ^ k); //加密,讲字符数组b中的每个字符跟a异或,然后放入b中
                }
                out.write(b, 0, n); //然后把b中的所有字符写入到writer流中,也就是hello.secret文件中
            }
            out.close(); //读完之后,关闭输出流
            in = new FileReader(fileTwo); //创建hello.secret文件的读文件流
            System.out.println("加密后的文件内容:"); //输出字符串
            while ((n = in.read(b)) != -1) { //当文件没有到达末尾,一直执行下面的循环体
                String str = new String(b, 0, n); //把b中的字符放入字符串变量str中
                System.out.println(str); //输出str中的值 (整个循环的意思是把加密后的文件输出到屏幕上)
            }
            in = new FileReader(fileTwo); //创建hello.secret文件的读文件流
            System.out.println("解密后的文件内容:"); //输出字符串
            while ((n = in.read(b)) != -1) { //当文件没有到达末尾,一直执行下面的循环体
                for (int i = 0; i < n; i++) { //for循环
                    b[i] = (char) (b[i] ^ k); //把b字符数组中的每个字符跟a异或(同一个字符异或两次之后,得到原来的字符)
                }
                System.out.println(new String(b, 0, n)); //输出b中的所有字符
            }
            in.close(); //关闭输入流
        } catch (IOException e) {
            System.out.println(e); //捕获io异常
        }
    }
}题目:文件加密: 
要求:将用户指定的已存在的扩展名为.txt的文件加密后存入另外一个指定文件中,加密算法通过将文本文件中每个字符与一个用户指定的字符进行“与”或“或”操作后实现,该用户指定的字符即是密匙。 
但是加密后有问题,例如:
加密前的一小段字符:
血鹫王国,边境城市洛水城,郊区的一栋小别墅,在微弱的灯光下,一个身影正悉悉索索地把玩着什么,不时荡出阵阵清脆的金属响声。  叹了口气,掌中托起一枚通体金黄,但是散布了无数黑点的戒指,这个别墅的主人,罗宾眼神里闪过一丝无奈,轻轻摇了摇头:失败了,这枚戒指现在连一个金币都不值。
加密然后解密后:
第一卷洛水城的黑户 第一章 黑户炼金术士  (起4I点4I中4I文4I网更新时间^2007-10-31
 11:54:00  本章字数^3366)  血鹫王国^边境城市洛水城^郊区的一栋小别墅^在微弱的灯光下^一个身影正悉悉索索地把玩着什么^不时荡出阵阵清脆的金属响声。  叹了口气^掌中托起
一枚通体金黄^但是散布了无数黑点的戒指^这个别墅的主人^罗宾眼神里闪过一丝无奈^轻轻摇了摇头^失败了^这枚戒指现在连一个金币都不值。

请教高手,为什么加密不成功?
怎样修改?(只用Char字符的加密,不转成Byte)

解决方案 »

  1.   

    能成功呀 ,看我的结果:
    a
    加密后的文件内容:
    蠡鸊珪嚜ュ还壢垯幣浺汕垯ュ邫卛盥乡桪屮削壤ュ坉忏彐盥瀎儨乪ュ乡之車弐欂惨惨絃絃坑拫珈眡亡丩ュ乬斗茀军陔陔湤腧盥醰尿咬墑っAlklkちち厘仧厂汵ュ揭乌戹贖乡査遻伲醰麥ュ伧晎攂幢仧斁攑麰烘盥扳捦ュ辸之削壤
    盥乚仛ュ缶察睝礿醭開辦乡乼斁天ュ輚輚搦仧搦奕サ奐资仧ュ辸査扳捦珑坉辿乡之醰幠邜乬偝っ
    解密后的文件内容:
    血鹫王国,边境城市洛水城,郊区的一栋小别墅,在微弱的灯光下,一个身影正悉悉索索地把玩着什么,不时荡出阵阵清脆的金属响声。   叹了口气,掌中托起一枚通体金黄,但是散布了无数黑点的戒指,这个别墅
    的主人,罗宾眼神里闪过一丝无奈,轻轻摇了摇头:失败了,这枚戒指现在连一个金币都不值。
      

  2.   

    楼上的kiwiyoyo 大人- -+
    这问题怎样解决呢?