Agile PLM: Checksum文件校验在File Server中的应用

checksum校验和示例和工具 CRC校验工具 http://www.metools.info/code/c15.html http://www.ip33.com/crc.html 校验算法: CRC-16 CRC-16/X25 两者貌似不一样 #include <stdio.h> #include <stdlib.h> #include <string.h> typedef unsigned short uint16_t; typedef unsigned int uint32_t; typedef 阅读详情

本文内容

本文介绍Agile PLM中File Manager文件服务器所使用的checksum校验原理及相关知识。在Agile中如果启用了Checksum功能,我们有时能在下载文件、checkout或者checkin的时候,碰到如下错误,即表示原始文件遭到了外部程序的篡改。

对于文件的checksum校验有非常多的方法,常见的有SHA1, MD5和CRC32。在Agile PLM中,文件的Checksum使用CRC32。对CRC算法感兴趣的可以查看此文:
http://en.wikipedia.org/wiki/Cyclic_redundancy_check

 

Agile中的Checksum

在Agile中每次上传文件后,新计算出的checksum值保存到file_info表的checksum_value栏位。在checkout(get)前,会重新计算文件服务器上的文件checksum并和数据库中的值做比较。

由于checksum的计算需要消耗一定的时间,对于大文件,可能出现秒级的延迟。在Agile PLM9.3.1.2中打开File Server的DEBUG开关做如下测试查看延时信息。
1. 当上传729,207,676字节(约720M)大小的文件时,日志显示checksum的计算耗时2.078秒。

<2012-12-09 19:51:23,545> <Vault:INFO> Entering updateChecksum => File ID:6020222 Vault Type :Standard Vault : Primary VaultRelativeFilePath :000/060/202/AGILE_16020222.zip
<2012-12-09 19:51:23,559> <EventDispatcher:DEBUG> Inside postCheckIn =>ServerContext:com.agile.webfs.components.security.ServerContext@d306dd File ID :6020222Checksum value :0 EIFS filepath :null IFS filepath :000/060/202/AGILE_16020222.zip HFS filepath :null Locations :http://localhost:8080/Filemgr/services/FileServer File type :zip
<2012-12-09 19:51:23,559> <Checksum:INFO> Checksum Enabled:true
<2012-12-09 19:51:25,637> <Checksum:INFO> Computed checksum value: 3309565842
<2012-12-09 19:51:25,637> <TimerUtil:DEBUG> Action:Checksum::postCheckIn Time Taken:2.078 secs
<2012-12-09 19:51:25,637> <FMInformationStore:INFO> Adding file information fileID :6020222 EIFS filepath :null IFS filepath :000/060/202/AGILE_16020222.zip HFS filepath :null Locations :http://localhost:8080/Filemgr/services/FileServer File type :zipPersistence Level :1
<2012-12-09 19:51:25,637> <TimerUtil:DEBUG> Action:EventDispatcher::postCheckIn Time Taken:2.078 secs
<2012-12-09 19:51:25,637> <TimerUtil:DEBUG> Action:Vault:: updateChecksum Time Taken:2.092 secs
<2012-12-09 19:51:25,637> <FileServerDispatcher:DEBUG> Leaving updateCheckSum

 

2. 下载相同大小的文件,checksum被重新计算,耗时为2.559秒。

<2012-12-09 20:18:49,719> <Checksum:INFO> Checksum Enabled:true
<2012-12-09 20:18:52,278> <Checksum:INFO> Computed Checksum value: 3309565842
<2012-12-09 20:18:52,278> <TimerUtil:DEBUG> Action:Checksum::preCheckOut Time Taken:2.559 secs

上述计算都在Tomcat服务器的JVM中完成,因此适当提高文件服务器的CPU也是可以考虑的范围。

 

企业开发应用

Checksum可以运用在我们自己的应用程序开发中。使用java.util.zip.CRC32非常方便高效。下述代码演示了使用CRC32类来快速计算一个1,444,792,736字节(约1.2G)大小的文件的checksum值,耗时14342毫秒。必须注意的是此处的checksum value是个十进制。

package zigzag.research.checksum;

import java.io.*;
import java.util.zip.CRC32;

public class ChecksumCalc {
    public static void main(String args[]) {
        final int BUFFER_SIZE = 1024;
        byte[] buffer = new byte[BUFFER_SIZE];
        CRC32 checksum = new CRC32();
        InputStream is = null;
        int length;
        long begin = System.currentTimeMillis();
        long end;
        try {
            is = new FileInputStream(new File("d:\\java_pid3256.hprof"));
            checksum.reset();
            while ((length = is.read(buffer, 0, BUFFER_SIZE)) != -1) {
                checksum.update(buffer, 0, length);
            }
            end = System.currentTimeMillis();
            System.out.println("checksum value=" + checksum.getValue() + ", time=" + (end-begin) + "ms");

        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}


运行结果:

D:\Program\Java\jdk1.5.0_07\bin\java zigzag.research.checksum.ChecksumCalc
checksum value=2151428387, time=14342ms

网络下载应用

checksum的校验在国外的各类下载应用中十分普遍,目的就是为了防范文件被恶意篡改。比如下面的一个文件下载提供了SHA1的校验值供用户检查文件是否合法。

我们可以使用免费的checksum计算工具HashCalc,下载地址为: http://www.slavasoft.com/hashcalc/index.htm

以上述Java代码计算的checksum来做例子运行HashCalc,得到十六进制的803C3123,就是上述十进制的2151428387。

 

关于CheckSum的计算 总和检验码,校验和。在数据处理和数据通信领域中,用于校验目的的一组数据项的和。1001 0110+0000 0110 =1001 0000 换算成十六进制就是90,所以CheckSum计算正确。如图,计算方式是Byte0+Byte1+Byte2+Byte3+Byte4+Byte5+Byte6。如果校验和的数值超过十六进制的FF,也就是255. 就要求其补码作为校验和.它通常是以十六进制为数制表示的形式,如下图,的校验和是: 66(十六进制)同时滚动发送的CheckSum值,也增加了信息通讯的安全性。... 阅读详情

相关推荐

Agile PLM 表结构说明

Agile表结构 物料 变更 BOM

namelessmyth的专栏 4031

Agile PLM文件服务器报错解决

上传附件报错:未上传和错误。 问题描述: 文件服务器控制台报错: User browser origin http:/110.66.52.212:7001 is not in configured Access Control Allow Origin urls list. Please contact your Administrator 解决方案 不要使用IP访问Agile应用。如果要用IP访问,需要在配置文件server.conf,在最后一行添加例外 ...

namelessmyth的专栏 663

checksum校验和计算工具

checksum校验和计算工具,16进制校验和计算工具,简单实用。

【免费下载】 checksum校验和计算工具

checksum校验和计算工具 【下载地址】checksum校验和计算工具 本仓库提供的是一个高效、易用的校验和计算工具,专注于十六进制校验和的生成与验证。无论是软件开发者、系统管理员还是普通用户,当需要验证数据完整性或文件是否在传输过程中被篡改时,这款工具都是您的理想选择。其简洁的界面和强大的功能确保了用户能够快速准确...

gitblog_09731的博客 6809

校验和CheckSum获取工具

在通讯技术开发过程中往往需要用到校验和,调试过程中需要计算校验和正确与否?用此工具很方便计算出校验和。 使用说明:在输入文本框中以十六进制输入一串需要计算的数据(以空格分开,不需要0x开头),如输入: 15 9a b6 85 4f 点击按钮GetCheckSum 即可在输出文本框中显示:1B 20

【Creator】cocoscreator 2.4 apk还原为工程 (1)

Cocos Creator 2.4 还原图片 meta文件

jokesuser的博客 2260

checksum计算方法

1、 先将需要计算checksum数据中的checksum设为0;  2、 计算checksum的数据按2byte划分开来,每2byte组成一个16bit的值,如果最后有单个byte的数据,补一个byte的0组成2byte;  3、 将所有的16bit值累加到一个32bit的值中;  4、 将32bit值的高16bit与低16bit相加到一个新的32bit值中,若新的32bit值大于0Xffff,...

lisayh的博客 6万+

Replay音频转换时samplerate缺失的解决方案指南

Replay音频转换时提示"No module named 'samplerate' This error is lazily reported, having originally occured in File"的解决方案

weixin_47445543的博客 2134

文件的CHECKSUM工具

文件的CHECKSUM工具/** Function: Get File checksum value for win32 Author: Tody Kwok Revsion: 1.0.0.1 (c) Tody 2010 */ #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;conio2....

mmdev 1264

Zemax非序列模式微透镜阵列仿真:从建模到优化完整指南

光线追迹是光学系统仿真的核心技术,其原理基于几何光学与物理光学的光线传播模型,通过精确计算光线在光学元件中的折射、反射与散射路径,实现对系统性能的预测与评估。在微透镜阵列等复杂多通道光学系统中,传统序列模式因光线路径受限而难以准确模拟串扰与杂散光,非序列光线追迹技术则凭借其灵活的空间传播机制成为关键手段。该技术广泛应用于激光整形、光束匀化、3D传感及光场成像等领域,能够有效支持阵列结构设计与优化。Zemax非序列模式为微透镜阵列仿真提供了完整的建模、优化与公差分析流程,是光学工程师进行复杂系统设计的核心工具

weixin_29967003的博客 337

概述DeepLab系列(deeplab v1, deeplab v2, deeplab v3, deeplab v3+)

前言:图像分割是指像素级别的图像识别,即标注出图像中每个像素所属的对象类别。 语义分割更注重类别之间的区分,而实例分割更注重个体之间的区别。 DeepLab是由Google团队提出的一系列图像分割算法。 DeepLab v1 (2014年) Paper (ICLR 2015) Code 创新点: 空洞卷积(Atrous Conv); <解决编码过程中信号不断被下采样,细节丢失的问题> 全连接条件随机场(Fully-connected Conditional Random Field)。

ZSH12345678900的博客 5529

校验和checksum、哈希值是什么?

文章目录校验和、哈希值是什么?校验和的简单示例校验和的使用校验和计算器译者注 校验和、哈希值是什么? 校验和是对一组数据(通常是一个文件)进行算法-加密哈希函数运算得到的结果。通过比较你手头文件和原始文件的校验和,能够确保你对原始文件的拷贝是真的并且不存在错误。 校验和通常也被称之为哈希值、哈希和、哈希码,或简称为哈希–hash。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-E7sA9S8x-1596125046482)(/Users/chenyao/Library/App

CHENYAoo的博客 1万+

【RT-DETR涨点改进】独家小目标涨点改进篇 | TGRS 2025 | RT-DETR引入ABRNet小目标检测顶刊中的:ARF自适应性感受野和MCA双向交叉轴注意力,适合小目标检测有效涨点

本文提出了一种改进的RT-DETR小目标检测方法,通过集成自适应感受野模块(ARF)和多尺度交叉轴注意力模块(BC)来提升检测性能。ARF模块采用多种卷积核动态调整感受野,有效捕获多尺度目标特征并减少背景干扰;BC模块通过多尺度交叉轴注意力机制增强全局信息提取和特征融合能力。实验表明,该方法在复杂背景下显著提升了红外小目标检测的精度和效率,同时降低了计算开销。文章详细介绍了模块结构、原理及实现代码,并提供了多种改进配置方案,为小目标检测任务提供了有效的解决方案。

Ai缝合怪、助力小伙伴高效发论文 570

Agile PLM: 无法上传任何文件,错误显“FOLDERXXXX”已存在

问题描述 某客户在进行常规的外部数据导入和数据库重整后,发现所有人都无法上传附件,WebClient界面错误提示:“无法保存您所做的变更。您有一个错误。”。查看文件服务器的日志,没有任何错误。查看Agile服务器日志,提示FOLDER已经存在,详细如下: 分析 查看attachment表,果然此FOLDER0052277已经存在,但注意看创建日期是9月18日。 为什

ZigzagSoft.net 1945

基于线性约束最小方差准则(LCMV)的自适应波束形成算法的matlab仿真

波束形成(BeamForming)通过对多路麦克风(常为多路全向麦)信号进行合并,抑制非目标方向信号,增强目标方向信号;进而能够实现对特定方向的聚焦拾音,能够有效提高接收信号的信噪比,也有起到降噪的作用。基本原理是波的干涉:通过调整不同阵列单元信号之间的参数,使得某些角度的信号增强,而另一些角度的信号相互抵消,例如下图中来自±45°的输入信号未被增强,而在0度方向的输入信号同相位叠加后被增强。为了将窄带波束形成扩展至宽带,可以使用频域LCMV波束形成器。

平时工作较为繁忙,私信消息一般晚上回复,谢谢大家~~ 763

(01)ORB-SLAM2源码无死角解析-(38) EPnP 算法原理详解→理论基础二:分情况求得beta初始解

讲解关于slam一系列文章汇总链接:史上最全slam从零开始,针对于本栏目讲解的(01)ORB-SLAM2源码无死角解析链接如下(本文内容来自计算机视觉life ORB-SLAM2 课程课件): (01)ORB-SLAM2源码无死角解析-(00)目录_最新无死角讲解:https://blog.youkuaiyun.com/weixin_43013761/article/details/123092196 文末正下方中心提供了本人联系方式,点击本人照片即可显示WX→官方认证{\color{blue}{文末正下方中心}

江南才尽江南山,年少无知年少狂! 1025

【免费下载】 史上最强的CheckSum CRC校验工具

史上最强的CheckSum CRC校验工具 【下载地址】史上最强的CheckSumCRC校验工具 本仓库提供的是一个功能极为强大的CRC校验工具,覆盖了业界广泛使用的105种CRC算法,从CRC3至CRC82,包括广为人知的CRC32和CRC64等,以及Adler32。这款工具设计精良,旨在满足各种校验需求,无论是专业开...

gitblog_09785的博客 1360

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Linux C语言实现TCP/IP的checksum校验和计算

Linux C语言实现IP/TCP的checksum校验和计算一、sendip的IP/TCP的checksum计算二、checksum的计算测试   在使用原始套接字发送/接收报文时,需要计算IP/TCP的checksum来验证报文的准确性,网上看了很多开源软件的实现(如SendIP、libdnet、Suricata),感觉SendIP的代码最简单,所以整理如下方便后面使用。 一、sendip的IP/TCP的checksum计算 1、sendip: https://github.com/rickett

Fighting! Go! Go! Go! 3263

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

推荐一个很好的开源的checksum计算工具QuickHash-GUI

There is a good hashing software named QuickHash-GUI, which can bedownload from the weblink  http://quickhash-gui.org/downloads/ Below are the features of this QuickHash-GUI software and a scree

7219

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

CheckSum 计算工具1——bin文件

工作需要,现在需要一个能够计算文件CheckSum的工具。要求: 1。能够计算bin、hex和mot文件。 2。结果为8位的CheckSum。 首先处理bin文件,这个文件格式最简单,纯粹的二进制数据,不涉及到地址信息,所以只需要将其从头到尾加起来就行了。 需要注意的地方是如果Flash的大小为4MB,bin的实际大小只有3MB大小,剩...

weixin_34288121的博客 5165

在线计算小工具

http://www.elecfans.com/tools/dbm.htm

mcusun2000的博客 2606

IBM AIX平台的通用保护错误Thread Dump案例分析

问题描述 某客户Oracle Agile PLM的集群服务器中的一个节点突然crash掉,在javacore(Thread Dump)中记录了GPF错误。 问题分析 系统环境如下: OS: AIX 5.3 64bit Middleware: Weblogic 10.3.0.0 JDK: IBM JDK pap6460sr5-20090529_04 (SR5) App: A

ZigzagSoft.net 2420

Agile PLM: JavClient无法登录错误 ClassNotFoundException: weblogic.workarea.spi.WorkContextEntryImpl

问题描述 一客户案例,新安装完Agile 9.3.1.2, Weblogic 10.3.6, 服务能启动, WebClient能登录正常使用。而用户却无法登录JavaClient,JavaClient输入用户名后只显示蓝色背景,如下图。 启用Java Console后,出现如下ClassNotFoundException异常。 [SunJDK14ConditionalEventP

ZigzagSoft.net 2389

Agile PLM: PPM的甘特图无法编辑Project属性

问题描述 某客户的Agile PLM从早期的9.2版本升级到9.3.1版本之后,发现即使给用户分配了足够的权限,在Project用Gantt Chart打开后,无法编辑任何栏位。 分析 从现象上来看,属于权限分配问题,但即使重新分配权限,问题依旧。因此我们打开Java控制台,重新加载一次甘特图,获取错误如下。 Exception in thread "AWT-EventQueue-

ZigzagSoft.net 1798
上一篇: Oracle Database: 安全地删除数据库用户
zigzagsoft
博客等级 码龄19年 34粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值