home *** CD-ROM | disk | FTP | other *** search
- import java.io.ByteArrayOutputStream;
- import java.io.InputStream;
- import java.io.PrintStream;
- import java.util.Random;
-
- public abstract class mdigest {
- public byte[] digestBits;
- public boolean digestValid;
- static byte[] testdata;
-
- public abstract String getAlg();
-
- public void updateASCII(String var1) {
- int var3 = var1.length();
-
- for(int var2 = 0; var2 < var3; ++var2) {
- byte var4 = (byte)(var1.charAt(var2) & 255);
- this.update(var4);
- }
-
- }
-
- public String toString() {
- ByteArrayOutputStream var1 = new ByteArrayOutputStream();
- PrintStream var2 = new PrintStream(var1);
- var2.print(this.getClass().getName() + " Message Digest ");
- if (this.digestValid) {
- var2.print("<");
-
- for(int var3 = 0; var3 < this.digestBits.length; ++var3) {
- this.hexDigit(var2, this.digestBits[var3]);
- }
-
- var2.print(">");
- } else {
- var2.print("<incomplete>");
- }
-
- var2.println();
- return var1.toString();
- }
-
- public static boolean isEqual(byte[] var0, byte[] var1) {
- if (var0.length != var1.length) {
- return false;
- } else {
- for(int var2 = 0; var2 < var0.length; ++var2) {
- if (var0[var2] != var1[var2]) {
- return false;
- }
- }
-
- return true;
- }
- }
-
- public boolean isEqual(byte[] var1) {
- return isEqual(this.digestBits, var1);
- }
-
- public static void benchmark(mdigest var0) {
- Random var1 = new Random();
- testdata = new byte[16384];
- long[] var2 = new long[14];
- double[] var3 = new double[14];
-
- for(int var4 = 0; var4 < testdata.length; ++var4) {
- testdata[var4] = (byte)(var1.nextInt() >>> 8);
- }
-
- System.out.println("Benchmarking " + var0.getAlg());
- System.out.println("Bytes Time (mS) Rate (Bytes/Sec)");
- int var8 = 1;
-
- do {
- long var5 = System.currentTimeMillis();
- var0.init();
-
- for(int var7 = 0; var7 < var8; ++var7) {
- var0.update(testdata);
- }
-
- var0.finish();
- var2[var8] = System.currentTimeMillis() - var5;
- var3[var8] = (double)(var8 * testdata.length) * (double)1000.0F / (double)var2[var8];
- System.out.println(var8 * testdata.length + "\t" + var2[var8] + "\t" + var3[var8]);
- ++var8;
- } while(var8 < 10);
-
- System.out.println("Done.");
- }
-
- public abstract void update(byte var1);
-
- public synchronized void update(boolean var1) {
- byte var2;
- if (var1) {
- var2 = 1;
- } else {
- var2 = 0;
- }
-
- this.update(var2);
- }
-
- public synchronized void update(short var1) {
- byte var2 = (byte)(var1 >>> 8 & 255);
- byte var3 = (byte)(var1 & 255);
- this.update(var2);
- this.update(var3);
- }
-
- public synchronized void update(int var1) {
- int var3 = 3;
-
- do {
- byte var2 = (byte)(var1 >>> var3 * 8 & 255);
- this.update(var2);
- --var3;
- } while(var3 >= 0);
-
- }
-
- public synchronized void update(long var1) {
- int var4 = 7;
-
- do {
- byte var3 = (byte)((int)(var1 >>> var4 * 8 & 255L));
- this.update(var3);
- --var4;
- } while(var4 >= 0);
-
- }
-
- public synchronized void update(byte[] var1, int var2, int var3) {
- for(int var4 = 0; var4 < var3; ++var4) {
- this.update(var1[var4 + var2]);
- }
-
- }
-
- public synchronized void update(byte[] var1) {
- this.update(var1, 0, var1.length);
- }
-
- public synchronized void update(short[] var1) {
- for(int var2 = 0; var2 < var1.length; ++var2) {
- this.update(var1[var2]);
- }
-
- }
-
- public synchronized void update(int[] var1) {
- for(int var2 = 0; var2 < var1.length; ++var2) {
- this.update(var1[var2]);
- }
-
- }
-
- public synchronized void update(long[] var1) {
- for(int var2 = 0; var2 < var1.length; ++var2) {
- this.update(var1[var2]);
- }
-
- }
-
- public void update(String var1) {
- int var3 = var1.length();
-
- for(int var2 = 0; var2 < var3; ++var2) {
- short var4 = (short)var1.charAt(var2);
- this.update(var4);
- }
-
- }
-
- public void update(InputStream var1) {
- byte var2;
- try {
- while((var2 = (byte)var1.read()) != -1) {
- this.update(var2);
- }
- } catch (Exception var3) {
- }
-
- }
-
- private void hexDigit(PrintStream var1, byte var2) {
- char var3 = (char)(var2 >> 4 & 15);
- if (var3 > '\t') {
- var3 = (char)(var3 - 10 + 65);
- } else {
- var3 = (char)(var3 + 48);
- }
-
- var1.write(var3);
- var3 = (char)(var2 & 15);
- if (var3 > '\t') {
- var3 = (char)(var3 - 10 + 65);
- } else {
- var3 = (char)(var3 + 48);
- }
-
- var1.write(var3);
- }
-
- public void computeDigest(byte[] var1) {
- this.init();
- this.update(var1);
- this.finish();
- }
-
- public void computeDigest(InputStream var1) {
- this.init();
- this.update(var1);
- this.finish();
- }
-
- public abstract void init();
-
- public abstract void finish();
- }
-