Java : Checksum (チェックサム) - API使用例
Checksum (Java SE 23 & JDK 23) の使い方まとめです。
ほとんどのメソッドにサンプルコードがあります。
APIドキュメントのおともにどうぞ。
概要
データ・チェックサムを表すインタフェースです。
Checksum は、誤り検出符号の1つであるチェックサムを算出するためのインタフェースです。
標準APIとしては
- CRC32
- CRC32C
- Adler32
が実装されています。
final byte[] b = "abcd".getBytes();
System.out.println(Arrays.toString(b)); // [97, 98, 99, 100]
{
final Checksum checksum = new CRC32();
checksum.update(b);
System.out.printf("%x%n", checksum.getValue()); // ed82cd11
}
{
final Checksum checksum = new Adler32();
checksum.update(b);
System.out.printf("%x%n", checksum.getValue()); // 3d8018b
}
メソッド
long getValue ()
現在のチェックサム値を返します。
final var b = "abcd".getBytes();
System.out.println(Arrays.toString(b)); // [97, 98, 99, 100]
final Checksum checksum = new CRC32();
checksum.update(b);
System.out.printf("%x%n", checksum.getValue()); // ed82cd11
final Checksum checksum = new CRC32();
checksum.update(97);
System.out.printf("%x%n", checksum.getValue()); // e8b7be43
checksum.update(98);
System.out.printf("%x%n", checksum.getValue()); // 9e83486d
checksum.update(99);
System.out.printf("%x%n", checksum.getValue()); // 352441c2
checksum.update(100);
System.out.printf("%x%n", checksum.getValue()); // ed82cd11
void reset ()
チェックサムを初期値にリセットします。
final Checksum checksum = new CRC32();
System.out.printf("%x%n", checksum.getValue()); // 0
checksum.update("abcd".getBytes());
System.out.printf("%x%n", checksum.getValue()); // ed82cd11
checksum.reset();
System.out.printf("%x%n", checksum.getValue()); // 0
default void update (byte[] b)
現在のチェックサムを指定されたバイト配列で更新します。
final var b = "abcd".getBytes();
System.out.println(Arrays.toString(b)); // [97, 98, 99, 100]
final Checksum checksum = new CRC32();
checksum.update(b);
System.out.printf("%x%n", checksum.getValue()); // ed82cd11
final Checksum checksum = new CRC32();
checksum.update(97);
System.out.printf("%x%n", checksum.getValue()); // e8b7be43
checksum.update(98);
System.out.printf("%x%n", checksum.getValue()); // 9e83486d
checksum.update(99);
System.out.printf("%x%n", checksum.getValue()); // 352441c2
checksum.update(100);
System.out.printf("%x%n", checksum.getValue()); // ed82cd11
void update (byte[] b, int off, int len)
現在のチェックサムを指定されたバイト配列で更新します。
final var b = "abcdXYZ".getBytes();
System.out.println(Arrays.toString(b)); // [97, 98, 99, 100, 88, 89, 90]
final Checksum checksum = new CRC32();
checksum.update(b, 0, 4);
System.out.printf("%x%n", checksum.getValue()); // ed82cd11
checksum.reset();
checksum.update(b, 4, 3);
System.out.printf("%x%n", checksum.getValue()); // 7d29f8ed
final Checksum checksum = new CRC32();
checksum.update("abcd".getBytes());
System.out.printf("%x%n", checksum.getValue()); // ed82cd11
checksum.reset();
checksum.update("XYZ".getBytes());
System.out.printf("%x%n", checksum.getValue()); // 7d29f8ed
void update (int b)
現在のチェックサムを指定されたバイトで更新します。
final var b = "abcd".getBytes();
System.out.println(Arrays.toString(b)); // [97, 98, 99, 100]
final Checksum checksum = new CRC32();
checksum.update(b);
System.out.printf("%x%n", checksum.getValue()); // ed82cd11
final Checksum checksum = new CRC32();
checksum.update(97);
System.out.printf("%x%n", checksum.getValue()); // e8b7be43
checksum.update(98);
System.out.printf("%x%n", checksum.getValue()); // 9e83486d
checksum.update(99);
System.out.printf("%x%n", checksum.getValue()); // 352441c2
checksum.update(100);
System.out.printf("%x%n", checksum.getValue()); // ed82cd11
default void update (ByteBuffer buffer)
現在のチェックサムを、指定されたバッファのバイト数で更新します。
final var buffer = ByteBuffer.wrap("abcd".getBytes());
System.out.println(buffer); // java.nio.HeapByteBuffer[pos=0 lim=4 cap=4]
final Checksum checksum = new CRC32();
checksum.update(buffer);
System.out.printf("%x%n", checksum.getValue()); // ed82cd11
System.out.println(buffer); // java.nio.HeapByteBuffer[pos=4 lim=4 cap=4]