package testcode.crypto;
import testcode.util.HexUtil;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;
public class CustomMessageDigest extends MessageDigest {
private ByteArrayOutputStream buffer = new ByteArrayOutputStream();
protected CustomMessageDigest() {
super("WEAK");
}
@Override
protected void engineUpdate(byte input) {
buffer.write(input);
}
@Override
protected void engineUpdate(byte[] input, int offset, int len) {
try {
buffer.write(input);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
@Override
protected byte[] engineDigest() {
byte[] content = buffer.toByteArray();
return Arrays.copyOf(content, 8);
}
@Override
protected void engineReset() {
buffer.reset();
}
public static void main(String[] args) throws NoSuchAlgorithmException {
MessageDigest dig = new CustomMessageDigest();
dig.update("This is a test!".getBytes());
byte[] result = dig.digest();
printHex(result);
}
private static void printHex(byte[] bytes) {
System.out.println(HexUtil.toString(bytes));
}
}