Crc32校验

复制代码
   public class Crc32
    {
        public static uint ComputeChecksum(byte[] bytes)
        {
            uint[] table = new uint[256];

            // Initialize CRC table.
            for (uint i = 0; i < 256; i++)
            {
                uint crc = i;
                for (uint j = 0; j < 8; j++)
                    crc = (crc & 1) != 0 ? (crc >> 1) ^ 0xEDB88320 : crc >> 1;
                table[i] = crc;
            }

            uint crcValue = 0xffffffff;
            foreach (byte b in bytes)
            {
                byte index = (byte)(((crcValue) & 0xff) ^ b);
                crcValue = (crcValue >> 8) ^ table[index];
            }
            return ~crcValue; // Finalize the CRC value by inverting all the bits.
        }

        public static uint ComputeChecksumFromFile(string path)
        {
            byte[] bytes = File.ReadAllBytes(path);
            return ComputeChecksum(bytes);
        }
    }
复制代码

 

posted @   极客船长  阅读(34)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
历史上的今天:
2023-03-07 【聊天从未如此智能】赶紧尝试我们的智能对话聊天小程序吧!
2023-03-07 ChatGPT中文免费小程序(AI智能小聊) - ChatGPT国内小程序版在线使用
点击右上角即可分享
微信分享提示