我有一个应用程序,我正在根据 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[] …
我正在 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) 我想在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)
这个错误是什么意思?我该怎么办?
我正在尝试使用 powershell 为整个目录生成 MD5 校验和。\n在 Linux 上,有一个非常有效的 1-liner,如下所示:
\n$ tar -cf - 某个目录 | md5和
\n我了解到“tar”现在是 Windows10 的一部分,并且可以在 PowerShell 中对其进行寻址。\n所以我尝试了以下操作:
\ntar -cf - C:\\数据 | Get-FileHash -MD5 算法
\n我从 PowerShell 得到的是这样的:
\ntar.exe:从成员名称中删除前导驱动器号
\nGet-FileHash:输入对象无法绑定到命令的任何参数,因为该命令不接受管道输入或输入及其属性与接受管道输入
我的 Shell 设置为德语,因此我通过翻译机(https://www.translator.eu/#)运行德语错误文本。
\n我想知道为什么我收到这个特定的错误消息,因为 Get-FileHash 能够处理管道输入,例如:
\nLS | Get-FileHash -MD5 算法
\n这个命令就像一个魅力,但它为我提供了每个文件的校验和。\n我想要的是完整给定目录的 1 个校验和。
\n所以,我可能搞砸了一些东西\xe2\x80\xa6 - 有什么想法吗?
\n刚从 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) 如何使用C制作文件的校验和?我不想使用任何第三方,只是默认的c语言而且速度非常重要(它少了50mb的文件,但无论如何)
谢谢
我希望能够判断SQLite数据库文件是否已经以任何方式更新.我该如何实施呢?
我想到的第一个解决方案是比较校验和,但我没有任何使用校验和的经验.
我一直在将支付网关与我的网站集成.在他们的文档中,他们已指定进行校验和
$checksum = $merchantid."|".$amount."|".$customerReferenceNo;
$checksum = hash('sha256', $checksum);
Run Code Online (Sandbox Code Playgroud)
就像他们的PHP文档一样.
我想知道为什么使用它以及如何使用我发送它们的校验和.思考?
我的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下的顶级文件中没有任何用处,删除和恢复目录并没有解决我的问题.有人有其他建议吗?
我正在编写脚本以建立图片数据库。我有一个可以正常工作的脚本。它在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)