mirror of
https://github.com/mitb-archive/filebot
synced 2025-03-09 22:09:47 -04:00
Refactor Hash
This commit is contained in:
parent
eaa038c66e
commit
eabd0125c0
@ -1,36 +0,0 @@
|
|||||||
|
|
||||||
package net.filebot.hash;
|
|
||||||
|
|
||||||
|
|
||||||
import java.math.BigInteger;
|
|
||||||
import java.security.NoSuchAlgorithmException;
|
|
||||||
|
|
||||||
import jonelo.jacksum.algorithm.Edonkey;
|
|
||||||
|
|
||||||
|
|
||||||
public class Ed2kHash implements Hash {
|
|
||||||
|
|
||||||
private final Edonkey ed2k;
|
|
||||||
|
|
||||||
|
|
||||||
public Ed2kHash() {
|
|
||||||
try {
|
|
||||||
this.ed2k = new Edonkey();
|
|
||||||
} catch (NoSuchAlgorithmException e) {
|
|
||||||
throw new RuntimeException(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void update(byte[] bytes, int off, int len) {
|
|
||||||
ed2k.update(bytes, off, len);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String digest() {
|
|
||||||
return String.format("%0" + (ed2k.getByteArray().length * 2) + "x", new BigInteger(1, ed2k.getByteArray()));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -78,7 +78,7 @@ public enum HashType {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public VerificationFormat getFormat() {
|
public VerificationFormat getFormat() {
|
||||||
// e.g 1a02a7c1e9ac91346d08829d5037b240f42ded07 ?SHA1*folder/file.txt
|
// e.g 1a02a7c1e9ac91346d08829d5037b240f42ded07 ?SHA256*folder/file.txt
|
||||||
return new VerificationFormat("SHA256");
|
return new VerificationFormat("SHA256");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -97,7 +97,7 @@ public enum HashType {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Hash newHash() {
|
public Hash newHash() {
|
||||||
return new Ed2kHash();
|
return JacksumHash.newED2K();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
33
source/net/filebot/hash/JacksumHash.java
Normal file
33
source/net/filebot/hash/JacksumHash.java
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
|
||||||
|
package net.filebot.hash;
|
||||||
|
|
||||||
|
import jonelo.jacksum.algorithm.AbstractChecksum;
|
||||||
|
import jonelo.jacksum.algorithm.Edonkey;
|
||||||
|
|
||||||
|
public class JacksumHash implements Hash {
|
||||||
|
|
||||||
|
private final AbstractChecksum checksum;
|
||||||
|
|
||||||
|
public JacksumHash(AbstractChecksum checksum) {
|
||||||
|
this.checksum = checksum;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void update(byte[] bytes, int off, int len) {
|
||||||
|
checksum.update(bytes, off, len);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String digest() {
|
||||||
|
return checksum.getFormattedValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Hash newED2K() {
|
||||||
|
try {
|
||||||
|
return new JacksumHash(new Edonkey());
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new IllegalStateException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -1,37 +1,30 @@
|
|||||||
|
|
||||||
package net.filebot.hash;
|
package net.filebot.hash;
|
||||||
|
|
||||||
|
|
||||||
import java.math.BigInteger;
|
import java.math.BigInteger;
|
||||||
import java.security.MessageDigest;
|
import java.security.MessageDigest;
|
||||||
import java.security.NoSuchAlgorithmException;
|
|
||||||
|
|
||||||
|
|
||||||
public class MessageDigestHash implements Hash {
|
public class MessageDigestHash implements Hash {
|
||||||
|
|
||||||
private final MessageDigest md;
|
private final MessageDigest md;
|
||||||
|
|
||||||
|
|
||||||
public MessageDigestHash(String algorithm) {
|
public MessageDigestHash(String algorithm) {
|
||||||
try {
|
try {
|
||||||
this.md = MessageDigest.getInstance(algorithm);
|
this.md = MessageDigest.getInstance(algorithm);
|
||||||
} catch (NoSuchAlgorithmException e) {
|
} catch (Exception e) {
|
||||||
throw new IllegalArgumentException(e);
|
throw new IllegalStateException(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public MessageDigestHash(MessageDigest md) {
|
public MessageDigestHash(MessageDigest md) {
|
||||||
this.md = md;
|
this.md = md;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void update(byte[] bytes, int off, int len) {
|
public void update(byte[] bytes, int off, int len) {
|
||||||
md.update(bytes, off, len);
|
md.update(bytes, off, len);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String digest() {
|
public String digest() {
|
||||||
// e.g. %032x (format for MD-5)
|
// e.g. %032x (format for MD-5)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user