Java如何实现校验和(Checksum)呢?
下文笔者讲述Java对文件进行校验的简介说明,如下所示:
校验和及实现算法
校验和是指传输位数的累加 当传输结束时 接收者可以根据这个数值判断是否接到了所有的数据 当数值匹配,则说明传送已经完成
校验和算法
常用的校验和算法有: Adler32 和 CRC32
CRC32算法
String str = "java265.com"; byte[] bytes = str.getBytes(); 接下来通过字节数组计算校验和: public static long getCRC32Checksum(byte[] bytes) { Checksum crc32 = new CRC32(); crc32.update(bytes, 0, bytes.length); return crc32.getValue(); }
输入流校验和
当校验对象是一个文件时,我们可以通过验证流的方式对数据进行验证 如下例所示
public static long getChecksumCRC32(InputStream stream, int bufferSize) throws IOException { CheckedInputStream checkedInputStream = new CheckedInputStream(stream, new CRC32()); byte[] buffer = new byte[bufferSize]; while (checkedInputStream.read(buffer, 0, buffer.length) >= 0) {} return checkedInputStream.getChecksum().getValue(); }
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。