标签: checksum

计算 Java 类校验和的最佳方法是什么?

我有一个应用程序,我正在根据 Java“源”类生成“目标文件”。我想在源更改时重新生成目标。我决定最好的方法是获取类内容的字节[]并计算字节[]的校验和。

我正在寻找获取类的 byte[] 的最佳方法。该 byte[] 相当于编译后的 .class 文件的内容。使用 ObjectOutputStream不起作用。下面的代码生成一个比类文件的字节内容小得多的 byte[]。

// Incorrect function to calculate the byte[] contents of a Java class
public static final byte[] getClassContents(Class<?> myClass) throws IOException {
    ByteArrayOutputStream buffer = new ByteArrayOutputStream();
    try( ObjectOutputStream stream = new ObjectOutputStream(buffer) ) {
        stream.writeObject(myClass);
    }
    // This byte array is much smaller than the contents of the *.class file!!!
    byte[] contents = buffer.toByteArray();
    return contents;
}
Run Code Online (Sandbox Code Playgroud)

有没有办法获取与 *.class 文件内容相同的 byte[] ?计算校验和是简单的部分,困难的部分是获取用于计算 MD5 或 CRC32 校验和的 byte[] …

java reflection checksum class

4
推荐指数
1
解决办法
6646
查看次数

Epson 打印机的 4 字节校验和、sum32 算法

我正在 Linux 设备上编写与 Epson tm-t88iv 热敏打印机的低级通信,该打印机仅接收十六进制包。我已阅读手册试图了解校验和是如何构建的,但我无法重新创建它。

手册上说校验和是 4 个字节,表示发送的包中所有数据的 2 个字节之和。

我目前有四个工作示例,是通过使用不同的程序监听 Windows 计算机上的端口而找到的。最后 4 个十六进制是校验和(根据手册,03 标记数据的结束并包含在校验和计算中)。

02 AC 00 01 1C 00 00 03 30 30 43 45
02 AC 00 00 1C 80 80 1C 00 00 1C 00 00 1C 03 30 32 32 31
02 AD 07 01 1C 00 00 1C 31 30 03 30 31 35 33
02 AD 00 00 1C 80 80 1C 00 00 1C 00 00 1C 03 30 32 …
Run Code Online (Sandbox Code Playgroud)

checksum low-level epson

4
推荐指数
1
解决办法
4852
查看次数

shasum:elasticsearch-5.0.0.deb.sha1:没有找到正确格式的 SHA1 校验和行意味着什么?

我想在ubuntu 17.10上安装elasticsearch5.6.4。所以我下载了elasticsearch.deb和elasticsearch.deb.sha1。正如本指南中的结构所说,在我跑步之后

shasum -a 512 -c elasticsearch-6.2.1.tar.gz.sha512
Run Code Online (Sandbox Code Playgroud)

我收到这个错误:

shasum: elasticsearch-5.6.4.deb.sha1: no properly formatted SHA1 checksum lines found
Run Code Online (Sandbox Code Playgroud)

这个错误是什么意思?我该怎么办?

checksum sha1 sha elasticsearch elasticsearch-5

4
推荐指数
1
解决办法
4687
查看次数

使用 powershell 对整个目录进行 MD5 校验和哈希

我正在尝试使用 powershell 为整个目录生成 MD5 校验和。\n在 Linux 上,有一个非常有效的 1-liner,如下所示:

\n

$ tar -cf - 某个目录 | md5和

\n

我了解到“tar”现在是 Windows10 的一部分,并且可以在 PowerShell 中对其进行寻址。\n所以我尝试了以下操作:

\n

tar -cf - C:\\数据 | Get-FileHash -MD5 算法

\n

我从 PowerShell 得到的是这样的:

\n
\n

tar.exe:从成员名称中删除前导驱动器号
\nGet-FileHash:输入对象无法绑定到命令的任何参数,因为该命令不接受管道输入或输入及其属性与接受管道输入

\n
\n

我的 Shell 设置为德语,因此我通过翻译机(https://www.translator.eu/#)运行德语错误文本。

\n

我想知道为什么我收到这个特定的错误消息,因为 Get-FileHash 能够处理管道输入,例如:

\n

LS | Get-FileHash -MD5 算法

\n

这个命令就像一个魅力,但它为我提供了每个文件的校验和。\n我想要的是完整给定目录的 1 个校验和。

\n

所以,我可能搞砸了一些东西\xe2\x80\xa6 - 有什么想法吗?

\n

directory powershell checksum md5

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

如何在 Deno 中获取文件校验和?

刚从 Deno 开始,我试图弄清楚如何计算二进制文件校验和。在我看来,问题不在于标准库的哈希模块提供的方法,而在于文件流方法和/或提供 hash.update 方法的块的类型。我一直在尝试一些与文件打开和块类型相关的替代方案,但没有成功。一个简单的例子如下:

import {createHash} from "https://deno.land/std@0.80.0/hash/mod.ts";

const file= new File(["my_big_folder.tar.gz"], "./my_big_folder.tar.gz");
const iterator = file.stream() .getIterator();
const hash = createHash("md5");
for await( let chunk of iterator){
   hash.update(chunk);
}
console.log(hash.toString()); //b35edd0be7acc21cae8490a17c545928
Run Code Online (Sandbox Code Playgroud)

这段代码编译并运行没有错误,遗憾的是结果与我运行node提供的crypto模块的函数和linux coreutils提供的md5sum的结果不同。有什么建议吗?

节点代码:

const crypto = require('crypto');
const fs = require('fs');

const hash = crypto.createHash('md5');

const file = './my_big_folder.tar.gz';
const stream = fs.ReadStream(file);
stream.on('data', data=> { hash.update(data); });
stream.on('end', ()=> {
  console.log(hash.digest('hex')); //c18f5eac67656328f7c4ec5d0ef5b96f
});

Run Code Online (Sandbox Code Playgroud)

bash 中的结果相同:

$ md5sum ./my_big_folder.tar.gz
$ c18f5eac67656328f7c4ec5d0ef5b96f ./my_big_folder.tar.gz
Run Code Online (Sandbox Code Playgroud)

在 Windows 10 上可以使用:

import …
Run Code Online (Sandbox Code Playgroud)

checksum stream md5sum sha1sum deno

4
推荐指数
1
解决办法
999
查看次数

C文件校验和

如何使用C制作文件的校验和?我不想使用任何第三方,只是默认的c语言而且速度非常重要(它少了50mb的文件,但无论如何)

谢谢

c checksum

3
推荐指数
3
解决办法
4万
查看次数

校验和SQLite数据库?

我希望能够判断SQLite数据库文件是否已经以任何方式更新.我该如何实施呢?

我想到的第一个解决方案是比较校验和,但我没有任何使用校验和的经验.

sqlite checksum

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

为什么支付网关使用校验和?

我一直在将支付网关与我的网站集成.在他们的文档中,他们已指定进行校验和

$checksum = $merchantid."|".$amount."|".$customerReferenceNo;   
$checksum = hash('sha256', $checksum);  
Run Code Online (Sandbox Code Playgroud)

就像他们的PHP文档一样.

我想知道为什么使用它以及如何使用我发送它们的校验和.思考?

php payment checksum payment-gateway

3
推荐指数
1
解决办法
1199
查看次数

更新时无法解决Subversion 1.7校验和不匹配错误

我的Subversion 1.7.17工作副本对特定文件不满意但无法更新.任何更新尝试都会给我带来同样的错误,即使我删除了文件或删除目录:

Updating 'trunk/src/Makefile':
svn: E155017: Checksum mismatch for '/Volumes/project/dev/torc/trunk/src/Makefile':
   expected:  78ee11ff73f3b68c903db838b6667ec3
   recorded:  62bbbf4362958e3fd42470650d5b4eb6
Run Code Online (Sandbox Code Playgroud)

我读过SVN - 更新时Checksum不匹配,它的两个主要解决方案是修改.svn/entries或删除和恢复目录..svn/entries在1.7下的顶级文件中没有任何用处,删除和恢复目录并没有解决我的问题.有人有其他建议吗?

svn checksum mismatch

3
推荐指数
1
解决办法
6939
查看次数

Node.js中大文件的校验和

我正在编写脚本以建立图片数据库。我有一个可以正常工作的脚本。它在9分24秒内通过包含5670个文件的文件夹,总计13.08 GB数据。然后,我尝试在更新的较大照片上执行,但执行量似乎大大减少了。在20分钟内,仅计算了一个文件夹中的三个小预览文件的哈希,其中包含431个文件,总计7.58 GB。

我究竟做错了什么?

var fs = require('fs')
var crypto = require('crypto')
var util = require('util')
var p = require('path')
var sqlite3 = require('sqlite3').verbose()
var db = new sqlite3.Database('./sqlite.db')
const hash_algorithm = 'sha256'

var fileCount = 0

function getFiles(directory) {
    fs.readdir(directory, function(err, files) {
        for (var i in files) {
            var filepath = directory + '/' + files[i]
            fileStat(filepath)
        }
    })
}

function fileStat(filepath) {
    fs.stat(filepath, function(err, stats) {
        if (stats.isDirectory()) {
            getFiles(filepath)
        } else {
            computeHash(filepath, hash_algorithm, function(err, hash) …
Run Code Online (Sandbox Code Playgroud)

checksum sha256 node.js

3
推荐指数
1
解决办法
1850
查看次数