本人写了一段代码用byte【8】数组做缓冲读写文件,但总是写入第一次读取的内容(即writebuffer内容总是第一次循环的结果),能否帮帮忙看哪里出问题了?XOR函数和Encode函数返回类型均为byte【8】数组,将Encode函数中temp改成readbuffer后(相当于直接跳过XOR函数),文件写入正常,XOR函数如下:各位帮帮忙,谢谢!

解决方案 »

  1.   

    通常要这样写int len=0;
    while((len=fin.Read(readBuffer,0,readBuffer.Length))>0)
    {
        .....
    }readBuffer中只有前面len个字节是有效的,你不能把后边多余的字节也当作有效内容去参与....的处理中!
      

  2.   

    1.将前一次读取的明文块和当前读取明文块异或
    2.将1中的结果用一个加密函数加密
    3.写入加密文件现在如果去掉第一步直接将当前读取的明文块加密执行成功,但加入第一步后writebuffer老往文件中写入第一循环的结果。比如明文头部为:abcdegfghijklmn...则老是写入abcdefghabcdefghabcdefgh...的密文
      

  3.   

    我把每次异或的内容改成一个固定byte数组写入又正常了,到底怎么回事呀?