XYZMessageDigest.java Source code

Java tutorial

Introduction

Here is the source code for XYZMessageDigest.java

Source

import java.security.MessageDigest;

public class XYZMessageDigest extends MessageDigest implements Cloneable {
    private int hash;

    private int store;

    private int nBytes;

    public XYZMessageDigest() {
        super("XYZ");
        engineReset();
    }

    public void engineUpdate(byte b) {
        switch (nBytes) {
        case 0:
            store = (b << 24) & 0xff000000;
            break;
        case 1:
            store |= (b << 16) & 0x00ff0000;
            break;
        case 2:
            store |= (b << 8) & 0x0000ff00;
            break;
        case 3:
            store |= (b << 0) & 0x000000ff;
            break;
        }
        nBytes++;
        if (nBytes == 4) {
            hash = hash ^ store;
            nBytes = 0;
            store = 0;
        }
    }

    public void engineUpdate(byte b[], int offset, int length) {
        for (int i = 0; i < length; i++)
            engineUpdate(b[i + offset]);
    }

    public void engineReset() {
        hash = 0;
        store = 0;
        nBytes = 0;
    }

    public byte[] engineDigest() {
        while (nBytes != 0)
            engineUpdate((byte) 0);
        byte b[] = new byte[4];
        b[0] = (byte) (hash >>> 24);
        b[1] = (byte) (hash >>> 16);
        b[2] = (byte) (hash >>> 8);
        b[3] = (byte) (hash >>> 0);
        engineReset();
        return b;
    }
}