Skip to main content

atmos/kernel/fs/
checksum.rs

1// checksum.rs - CRC32 Checksum implementation for SylFS data integrity
2#![allow(dead_code)]
3
4/// 与えられたバイトデータの CRC32 チェックサムを計算します (多項式: 0xEDB88320)
5pub fn crc32(data: &[u8]) -> u32 {
6    let mut crc = 0xFFFFFFFFu32;
7    for &byte in data {
8        crc ^= byte as u32;
9        for _ in 0..8 {
10            if (crc & 1) != 0 {
11                crc = (crc >> 1) ^ 0xEDB88320u32;
12            } else {
13                crc >>= 1;
14            }
15        }
16    }
17    !crc
18}