(我要疯了)请教大家一个问题:
问题:java加密和CRC校验先说加密和用java自带的CRC校验我会使用,问题是出在加密后没法校验密文的CRC详细描述遇到问题的地方:CheckedInputStream(InputStream in, Checksum cksum) :主要是这个函数的第一个参数:过程:
 发送方:1、获取图片的Stream
         2、计算图片的CRC 并在 流的开始 添加发送消息首部(发送消息首部包括主机信息以及图片描述等等)
         3、将发送消息的首部和图片流加密
         4、发送
接收方: 1、获取加密后的流
         2、从流的开始读取指定大小的字节
         3、解密首部信息,获取首部大小以及crc的值
         4、问题来了这里能够准确的定位到图片字节流的开始,但是是加密的,所以用crc校验肯定是错的,而直接解密图片的流那有没办法进行CRC校验,原因就是上面那个函数,必须是一个流。我也不可能写了图片再读出来。不然就是脱了裤子打屁了。大家给个提示吧。注意CRC是未加密之前的,要是是用加密后计算CRC就没这回事的。杯具啊 

解决方案 »

  1.   

    比如可以对首部进行一次简单的异或加密,这个密钥是预先双方协定好的,收到后只需要对预定大小的首部异或解密不久出来了嘛。
    这个我已经解决了,可以将整个流读成字节数组,但是新问题出来了。
    1、字节数组大小未知
    2、如果用集合ArrayList可以解决1,但是toArray(T[] a) 不能转换成字节数组,
      

  2.   

    crc  没有听说过 可能是我太孤陋寡闻了 
      

  3.   

    粉肠感谢, 我忘了,我CRC和头部内容长度都是这样做的  昏了