Skip to content

Commit 3974447

Browse files
committed
checksum dedupe
1 parent cd406f1 commit 3974447

File tree

1 file changed

+7
-8
lines changed

1 file changed

+7
-8
lines changed

+stdlib/file_checksum.m

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,32 +25,31 @@
2525
fid = fopen(file, 'r');
2626
assert(fid > 1, "could not open file %s", file)
2727

28-
2928
if stdlib.has_dotnet()
29+
3030
inst = System.Security.Cryptography.HashAlgorithm.Create(method);
3131
while ~feof(fid)
3232
% https://docs.microsoft.com/en-us/dotnet/api/system.security.cryptography.hashalgorithm.computehash
3333
inst.ComputeHash(fread(fid, file_chunk, '*uint8'));
3434
end
35+
h = uint8(inst.Hash);
36+
3537
elseif stdlib.has_java()
38+
3639
inst = javaMethod("getInstance", "java.security.MessageDigest", method);
3740
while ~feof(fid)
3841
% https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/security/MessageDigest.html#update(byte)
3942
inst.update(fread(fid, file_chunk, '*uint8'));
4043
end
44+
% https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/security/MessageDigest.html#digest()
45+
h = typecast(inst.digest, 'uint8');
46+
4147
else
4248
error('no supported hash method found, please install .NET or Java')
4349
end
4450

4551
fclose(fid);
4652

47-
if stdlib.has_dotnet()
48-
h = uint8(inst.Hash);
49-
elseif stdlib.has_java()
50-
% https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/security/MessageDigest.html#digest()
51-
h = typecast(inst.digest, 'uint8');
52-
end
53-
5453
hash = sprintf('%.2x', h);
5554

5655
end

0 commit comments

Comments
 (0)