home *** CD-ROM | disk | FTP | other *** search
/ CD Actual 27 / CDROM27.iso / share / wnt / jig / data1.cab / Program_Executable_Files / lib / jig.jar / CheckSum.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-08-19  |  2.6 KB  |  120 lines

  1. import java.io.FileInputStream;
  2. import java.io.FileOutputStream;
  3. import java.io.IOException;
  4. import java.util.Enumeration;
  5. import java.util.Hashtable;
  6. import java.util.Properties;
  7.  
  8. class CheckSum {
  9.    int checkSum;
  10.    int iterator;
  11.    int increment = 111;
  12.    static String CheckSumKey = "ID";
  13.  
  14.    public static void main(String[] var0) {
  15.       if (var0.length < 2) {
  16.          System.out.println("Usage: CheckSum filename [V|E]");
  17.          System.exit(1);
  18.       }
  19.  
  20.       if (var0[1].equalsIgnoreCase("v")) {
  21.          System.out.println("Valid = " + ValidateCheckSum(var0[0]));
  22.       }
  23.  
  24.       if (var0[1].equalsIgnoreCase("e")) {
  25.          System.out.println("Checksum = " + EmbedCheckSum(var0[0]));
  26.       }
  27.  
  28.       System.exit(1);
  29.    }
  30.  
  31.    int checkSum() {
  32.       return this.checkSum;
  33.    }
  34.  
  35.    void accumulate(int var1) {
  36.       this.checkSum += var1;
  37.    }
  38.  
  39.    int makePoly(String var1) {
  40.       byte[] var2 = var1.getBytes();
  41.       int var3 = 0;
  42.  
  43.       for(int var4 = 0; var4 < var2.length; ++var4) {
  44.          var3 += var2[var4] * (this.iterator += this.increment);
  45.       }
  46.  
  47.       return var3;
  48.    }
  49.  
  50.    private static String CheckSumKey() {
  51.       return CheckSumKey;
  52.    }
  53.  
  54.    public String toString() {
  55.       return "{" + this.checkSum + ", " + this.iterator + ", " + this.increment + "}";
  56.    }
  57.  
  58.    public static boolean ValidateCheckSum(String var0) {
  59.       boolean var1 = false;
  60.  
  61.       try {
  62.          FileInputStream var2 = new FileInputStream(var0);
  63.          Properties var3 = new Properties();
  64.          var3.load(var2);
  65.          CheckSum var4 = new CheckSum();
  66.          Enumeration var5 = var3.propertyNames();
  67.  
  68.          while(var5.hasMoreElements()) {
  69.             String var6 = (String)var5.nextElement();
  70.             if (!var6.equals(CheckSumKey)) {
  71.                var4.accumulate(var4.makePoly(var6));
  72.                var4.accumulate(var4.makePoly(var3.getProperty(var6)));
  73.             }
  74.          }
  75.  
  76.          String var8 = var3.getProperty(CheckSumKey);
  77.          if (var8 != null && new Integer(var8) == var4.checkSum()) {
  78.             var1 = true;
  79.          }
  80.  
  81.          var2.close();
  82.       } catch (IOException var7) {
  83.       }
  84.  
  85.       return var1;
  86.    }
  87.  
  88.    private static int EmbedCheckSum(String var0) {
  89.       Properties var1 = new Properties();
  90.       CheckSum var2 = new CheckSum();
  91.  
  92.       try {
  93.          FileInputStream var3 = new FileInputStream(var0);
  94.          var1.load(var3);
  95.          Enumeration var4 = var1.propertyNames();
  96.  
  97.          while(var4.hasMoreElements()) {
  98.             String var5 = (String)var4.nextElement();
  99.             if (!var5.equals(CheckSumKey)) {
  100.                var2.accumulate(var2.makePoly(var5));
  101.                var2.accumulate(var2.makePoly(var1.getProperty(var5)));
  102.             }
  103.          }
  104.  
  105.          var3.close();
  106.       } catch (IOException var7) {
  107.       }
  108.  
  109.       try {
  110.          FileOutputStream var8 = new FileOutputStream(var0);
  111.          ((Hashtable)var1).put(CheckSumKey, String.valueOf(var2.checkSum()));
  112.          var1.save(var8, "License");
  113.          var8.close();
  114.       } catch (IOException var6) {
  115.       }
  116.  
  117.       return var2.checkSum();
  118.    }
  119. }
  120.