home *** CD-ROM | disk | FTP | other *** search
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.util.Enumeration;
- import java.util.Hashtable;
- import java.util.Properties;
-
- class CheckSum {
- int checkSum;
- int iterator;
- int increment = 111;
- static String CheckSumKey = "ID";
-
- public static void main(String[] var0) {
- if (var0.length < 2) {
- System.out.println("Usage: CheckSum filename [V|E]");
- System.exit(1);
- }
-
- if (var0[1].equalsIgnoreCase("v")) {
- System.out.println("Valid = " + ValidateCheckSum(var0[0]));
- }
-
- if (var0[1].equalsIgnoreCase("e")) {
- System.out.println("Checksum = " + EmbedCheckSum(var0[0]));
- }
-
- System.exit(1);
- }
-
- int checkSum() {
- return this.checkSum;
- }
-
- void accumulate(int var1) {
- this.checkSum += var1;
- }
-
- int makePoly(String var1) {
- byte[] var2 = var1.getBytes();
- int var3 = 0;
-
- for(int var4 = 0; var4 < var2.length; ++var4) {
- var3 += var2[var4] * (this.iterator += this.increment);
- }
-
- return var3;
- }
-
- private static String CheckSumKey() {
- return CheckSumKey;
- }
-
- public String toString() {
- return "{" + this.checkSum + ", " + this.iterator + ", " + this.increment + "}";
- }
-
- public static boolean ValidateCheckSum(String var0) {
- boolean var1 = false;
-
- try {
- FileInputStream var2 = new FileInputStream(var0);
- Properties var3 = new Properties();
- var3.load(var2);
- CheckSum var4 = new CheckSum();
- Enumeration var5 = var3.propertyNames();
-
- while(var5.hasMoreElements()) {
- String var6 = (String)var5.nextElement();
- if (!var6.equals(CheckSumKey)) {
- var4.accumulate(var4.makePoly(var6));
- var4.accumulate(var4.makePoly(var3.getProperty(var6)));
- }
- }
-
- String var8 = var3.getProperty(CheckSumKey);
- if (var8 != null && new Integer(var8) == var4.checkSum()) {
- var1 = true;
- }
-
- var2.close();
- } catch (IOException var7) {
- }
-
- return var1;
- }
-
- private static int EmbedCheckSum(String var0) {
- Properties var1 = new Properties();
- CheckSum var2 = new CheckSum();
-
- try {
- FileInputStream var3 = new FileInputStream(var0);
- var1.load(var3);
- Enumeration var4 = var1.propertyNames();
-
- while(var4.hasMoreElements()) {
- String var5 = (String)var4.nextElement();
- if (!var5.equals(CheckSumKey)) {
- var2.accumulate(var2.makePoly(var5));
- var2.accumulate(var2.makePoly(var1.getProperty(var5)));
- }
- }
-
- var3.close();
- } catch (IOException var7) {
- }
-
- try {
- FileOutputStream var8 = new FileOutputStream(var0);
- ((Hashtable)var1).put(CheckSumKey, String.valueOf(var2.checkSum()));
- var1.save(var8, "License");
- var8.close();
- } catch (IOException var6) {
- }
-
- return var2.checkSum();
- }
- }
-