标签: checksum

在不存储校验和的情况下检查重复文件

例如,您有一个应用程序来处理由不同客户端发送的文件。客户端每天发送大量文件,您将这些文件的内容加载到您的系统中。这些文件具有相同的格式。给你的唯一限制是你不能运行同一个文件两次。

为了检查您是否运行了特定文件,需要创建该文件的校验和并将其存储在另一个文件中。因此,当您获得一个新文件时,您可以创建该文件的校验和,并与您运行和存储的其他文件的校验和进行比较。

现在,包含您迄今为止运行的所有文件的所有校验和的文件变得非常非常庞大。搜索和比较花费了太多时间。

注意:该应用程序使用平面文件作为其数据库。请不要建议使用 rdbms 之类的。目前根本不可能。

您认为还有其他方法可以检查重复文件吗?

checksum duplicates

2
推荐指数
1
解决办法
1916
查看次数

creating a file downloading script with checksum verification

我想创建一个从.diz文件中读取文件的shellcript,其中存储了编译某个软件所需的各种源文件的信息(在本例中为imagemagick).我在这个例子中使用Mac OSX Leopard 10.5.

基本上我想要一种简单的方法来维护这些.diz文件,这些文件包含最新源包的信息.我只需要用URL,版本信息和文件校验和更新这些.diz文件.

示例行:

libpng:1.2.42:libpng-1.2.42.tar.bz2?use_mirror=biznetnetworks:http://downloads.sourceforge.net/project/libpng/00-libpng-stable/1.2.42/libpng-1.2.42.tar.bz2?use_mirror=biznetnetworks:9a5cbe9798927fdf528f3186a8840ebe
Run Code Online (Sandbox Code Playgroud)

脚本部分:

while IFS=: read app version file url md5
do 
  echo "Downloading $app Version: $version"
  curl -L -v -O $url 2>> logfile.txt
  $calculated_md5=`/sbin/md5 $file | /usr/bin/cut -f 2 -d "="`
  echo $calculated_md5    
done < "files.diz"
Run Code Online (Sandbox Code Playgroud)

实际上我不仅仅有一个问题.

  1. 如何计算和比较校验和最好?我想在.diz文件中存储md5校验和,并将其与字符串比较与"cut"字符串比较
  2. 有没有办法告诉curl另一个文件名保存到?(在我的情况下,文件名变得丑陋libpng-1.2.42.tar.bz2?use_mirror = biznetnetworks)
  3. 我似乎有反引号的问题,应该指导管道md5的输出并切入变量$ calculated_md5.语法错了吗?

谢谢!

bash shell curl checksum backticks

2
推荐指数
2
解决办法
5440
查看次数

在运行应用程序我 C#/.NET 之前检查 DLL 是否真实/正确

嗨,我想弄清楚如何确保提供的 DLL 是正确的。原因是我们的分布式解决方案是由许多小 DLL 构建的,每个 DLL 都包含应用程序的某些部分,有时我们会推出其中一些的新版本。

它不是“更新问题”,而是快乐 - 我们如何检查:

  1. 它是正确的二进制/汇编

  2. 客户/客户篡改了文件,并可能将其替换为具有类似功能的同名之一以返回错误值?

多种原因

这可以用于版权保护/许可测试或其他重要的验证问题,所以我想弄清楚 MD5 校验和 + 某种组装信息是否足够?(如果是这样,如何访问程序集详细信息或类似信息?)

当然,当您可以反编译 .NET DLL 时,没有什么是故障安全的,但正是因此我们要确保有人不只是反编译我们的函数列表,然后在那里编写我们“哦,如此重要”的 DLL 的替代 DLL。

我们的原因是调试/支持所需的麻烦数量,当我们遇到因错误或目的而破坏这些的客户时(我们不关心原因,我们只是试图防止大多数可能的错误)。

.net c# checksum assemblies dll-injection

2
推荐指数
1
解决办法
2513
查看次数

校验位算法 Luhn mod N 与简单和

您知道为什么Luhn mod N 算法为了创建校验位而通过将每个偶数放置的字符的值加倍而不是执行所有字符的简单总和来执行求和吗?

用伪代码的话:

给出:

var s = "some string i want to create check digit";
Run Code Online (Sandbox Code Playgroud)

你知道为什么 Luhn mod N 基本上是这样的:

for(i from s.length-1 to 0)
   if(i is even)
      checkdigit += chr2int(s[i]) * 2;
   else
      checkdigit += chr2int(s[i]);
Run Code Online (Sandbox Code Playgroud)

而不是简单地做一个总和

for(i from s.length-1 to 0)
   checkdigit += chr2int(s[i]);
Run Code Online (Sandbox Code Playgroud)

他们仍然可以通过一个mod操作终止,使校验位适合一个字符

return int2chr( chr2int('a') + (checkdigit mod 25) );
Run Code Online (Sandbox Code Playgroud)

作为这个问题的旁注,它可能对 Luhn 算法的图形表示感兴趣,这使得它更容易理解:

在此处输入图片说明

其实这个是原始的 Luhn 算法,甚至不需要使用 MOD 函数。

algorithm checksum check-digit

2
推荐指数
1
解决办法
3778
查看次数

我的 UDP 校验和计算每次都给出错误的结果

我正在尝试手动计算各种 UDP 数据包的校验和,但与 Wireshark 中显示的结果相比,我总是得到错误的结果。下面是我如何做的一个例子:

Source Address: 192.168.0.103 (0xC0A8, 0x0067)
Destination Address: 192.168.0.1 (0xC0A8, 0x0001)

Source Port: 57090 (0xDF02)
Destination Port: 8000 (0x1F40)

Packet length: 19 (0x0013)
Data: hello world (0x6865, 0x6C6C, 0x6F20, 0x776F, 0x726C, 0x6400)

Expected checksum: 0xEDFD (from wireshark)
Run Code Online (Sandbox Code Playgroud)

我知道 UDP 校验和是使用以下变量计算的:

Source IP + Destination IP + 17 (0x0011 - protocol code) + 10 (0x000A - pseudoheader length) + Source Port + Destination Port + UDP Packet Length + Data
Run Code Online (Sandbox Code Playgroud)

所有这些都以 16 位为一组。

所以我的计算是(按相同顺序):

0xC0A8 + 0x0067 …
Run Code Online (Sandbox Code Playgroud)

checksum udp packet

2
推荐指数
1
解决办法
2164
查看次数

生成一系列随机的6位数字,避免因一个或换位错误而引起的潜在错误

我有一个应用程序,其中将分配6位数字用于物理访问控制。我遇到的困难是找到一种方法来避免导致有效PIN(来自该位置的一系列PIN)的单个数字或换位错误。我们希望每个位置不再需要1000个PIN。

无法在访问控制点执行校验和,因为它只会根据已批准的PIN列表查找PIN。

有没有人有什么建议?

random math checksum

2
推荐指数
1
解决办法
98
查看次数

校验和值与名为'isRecyclableGarden'的资源不匹配

所以我最近加入了AWS Lambda并且自从昨天下午以来我一直在研究机器人,但现在突然间,这种情况正在发生.每当我去构建机器人或保存意图时,我只是不断收到消息'校验和值与名为'isRecyclableGarden'的资源不匹配.

isRecyclableGarden是我在我的代码中使用的意图之一.我不能分享代码作为它的工作代码,我对此很新.有关如何再次验证如何验证校验和的任何帮助都会有所帮助,因为我无法实际编辑或使用此代码进行操作!

图为我遇到的问题.

python checksum amazon-web-services aws-lambda

2
推荐指数
1
解决办法
1451
查看次数

如何编写 ASTM 框架并将其发送到医疗设备

我目前正在研究 ASTM 协议,以向医疗仪器发送订单测试请求。但是我无法正确地向设备发送消息。更明确地说,我想例如发送这些帧:

        String h1, s2, s3, s4, s5, s6 = "";
        h1 = "H|@^\\|ODM-IdfDGIWA-36|||GeneXpert PC^GeneXpert^4.8|||||LIS||P|1394-97|20070521100245";
        s2 = "P|1";
        s3 = "O|1|SID-818||^^^TestId-12|S|20070812140500|||||A||||ORH||||||||||Q";
        s4 = "O|2|SID-818||^^^TestId-14|S|20070812140600|||||A||||ORH||||||||||Q";
        s5 = "O|3|SID-818||^^^TestId-16|S|20070812140700|||||A||||ORH||||||||||Q";
        s6 = "L|1|F";
Run Code Online (Sandbox Code Playgroud)

这是我现在的做法:

    writeMeBytes(outToServer, h1.getBytes());
    writeMeBytes(outToServer, s2.getBytes());
    writeMeBytes(outToServer, s3.getBytes());
    writeMeBytes(outToServer, s4.getBytes());
    writeMeBytes(outToServer, s5.getBytes());
    writeMeBytes(outToServer, s6.getBytes());


public static void writeMeBytes(DataOutputStream dos, byte [] b){
    if (b.length >0){
        int j = 0;
        while (j <= b.length-1) {
            try {
                dos.write(b[j++]);
            } catch (IOException ex) {
                Logger.getLogger(SimpleServer.class.getName()).log(Level.SEVERE, null, ex);
            }

        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我把它变成字节,然后一个字节一个字节地发送。 …

java string checksum astm

2
推荐指数
1
解决办法
7401
查看次数

从存储库下载工件和/或构建项目时,配置 Maven 以检查完整性校验和?

在某些情况下(比如没有余额),我的互联网提供商将任何 HTTP 请求重定向到一个简单的 html 存根。最近,我的 dev machive 上的 maven 缓存被 jar 文件淹没,这些 jar 文件的内容包含来自我的互联网提供商的 html 存根。这些 jar 文件在构建过程中没有被注意到,最终作为我的项目工件的一部分部署到 Tomcat。由于 Tomcat 日志中有关损坏的 jar 文件的警告,我注意到了问题。显然,我想在未来避免这种情况。

我看到在 Maven 缓存中,有些*.sha1文件应该包含 jar 文件的完整性校验和。就我而言,这些*.sha1也有错误的内容(由 html 存根组成)。

如果 jar 文件内容与完整性校验和不匹配,如何将 Maven 配置为在工件下载或构建过程中失败?

我使用的 Maven 版本是3.3.9.

java checksum data-integrity maven

2
推荐指数
1
解决办法
2880
查看次数

如何在 ffmpeg 中 md5 视频轨道(仅)

我有一个.mov包含视频和几个音轨的文件。要 md5 整个文件,我可以执行以下操作:

[pdev@d ~]$ md5sum 1_TRAILER_HD_2CH_ES419_ENSUB_16X9_178_2398_DIGITAL_FINAL.mov
042f0e177fe25f562079cc07208ec446
Run Code Online (Sandbox Code Playgroud)

虽然当我尝试在 中做同样的事情时ffmpeg,我得到了不同的值:

$ ffmpeg -i 1_TRAILER_HD_2CH_ES419_ENSUB_16X9_178_2398_DIGITAL_FINAL.mov -f md5 -
MD5=74bd904f1edb4eb1368040e2792d7497   0kB time=00:01:59.11 bitrate=   0.0kbits/s speed=2.36x
frame= 2867 fps= 56 q=-0.0 Lsize=       0kB time=00:01:59.57 bitrate=   0.0kbits/s speed=2.35x
video:23222700kB audio:22421kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
Run Code Online (Sandbox Code Playgroud)

为什么值不同?此外,如何仅对视频轨道进行校验和?我有各种具有不同音轨的文件,想看看这些文件上是否有相同的视频轨道。


更新:我相信这个答案显示了如何计算纯音频校验和,但不确定纯视频:https : //superuser.com/a/1044419/118248

linux video checksum md5 ffmpeg

2
推荐指数
1
解决办法
1302
查看次数