zl程序教程

您现在的位置是:首页 >  前端

当前栏目

信息摘要算法-CRC(循环冗余校验)

循环算法 信息 校验 摘要 冗余 CRC
2023-09-14 08:59:51 时间

一、简述

  确切的说CRC不算是信息摘要算法,但是他的原理也是散列函数。他经历过很多版本的改进。现阶段CRC-32算法是通信领域实现差错控制的的主要应用。

 

二、模型分析(以传递压缩数据模型为例):

  甲方对自己的数据做循环冗余校验(CRC)处理,然后向数据尾部追加冗余校验码,然后压缩,发送数据给乙方

  乙方解压缩,分离数据和校验码。然后对分离出的数据进行CRC处理,看得出的冗余校验码和分离出的校验码是否一致。进而判断数据的正确性。

三、java实现

package com.ca.test;

import java.util.zip.CRC32;

 * 测试循环冗余校验

 * @author kongqz

 * */

public class CRC {

  * @param args

 public static void main(String[] args) {

 String str="测试CRC-32";

 CRC32 c32=new CRC32();

 c32.update(str.getBytes());

 String hex=Long.toHexString(c32.getValue());

 System.out.println("原文:"+str);

 System.out.println("CRC-32处理后:"+hex);

控制台输出结果:

原文:测试CRC-32

CRC-32处理后:8734140f

四、总结

1、CRC32算法很常见。类似消息摘要算法,只不过它是将原文和摘要信息组合后发送给对方

2、算法是公开的。验证也很方便。上述算法调整下就可以做文件校验了


缓存键重复、冲突带来的数据读取错误 第二次了,栽在这个问题上, 依然是出自缓存。 需要注意两个问题: 1.根据分类读的数据列表,缓存键需要带上分类ID/分类名称。 2.由于子模块比较多,缓存键命名的时候,整体搜一下是否已存在当前缓存键,否则容易出现多个模块公用一个缓存的现象,导致必有一处数据不对。