Самопроверка Java-программы (самопроверка) - PullRequest
2 голосов
/ 29 декабря 2010

Я должен сделать небольшую программу самопроверки Java (самоконтроля).вот мой пример кода

public class tamper {
      public static int checksum_self () throws Exception {
          File file = new File ("tamper.class");
          FileInputStream fr = new FileInputStream (file);
          int result;                   // Compute the checksum
          return result;
      }
      public static boolean check1_for_tampering () throws Exception {
            return checksum_self () != 0; // TO BE UPDATED!
      }
      public static int check2_for_tampering () throws Exception {
            return checksum_self ();
      }
      public static void main (String args[]) throws Exception {
          if (check1_for_tampering ()) {
            System.exit (-1);
          }
          float celsius = Integer.parseInt (args[0]);
          float fahrenheit = 9 * celsius / 5 + 32;
          System.out.println (celsius + "C = " + fahrenheit + "F");
      }
}

Я пытался сделать что-то подобное

DigestInputStream sha = new DigestInputStream(fr, MessageDigest.getInstance("SHA"));
byte[] digest = sha.getMessageDigest();

for(..)
{
result = result + digest[i]
}

Но тогда я действительно не знаю, как это проверить ??

РЕДАКТИРОВАТЬ:

Спасибо за ваши ответы

@ Адам Пейнтер и SpoonBenders

Естественно, это не для моего личного использования.И я не буду использовать это для защиты любого программного обеспечения .....

Это "упражнение", которое я должен сделать для моего курса Java ...

Ответы [ 2 ]

1 голос
/ 29 декабря 2010

Может быть, вам стоит взглянуть на подписанные файлы jar .

0 голосов
/ 29 декабря 2010

Для проверки сначала необходимо создать контрольную сумму. Возможно, сразу после компиляции вам нужно запустить программу в режиме создания контрольной суммы, которая создаст и сохранит контрольную сумму в файле или в другом месте, к которому вы можете получить доступ во время выполнения.

Затем во время выполнения вам нужно будет загрузить эту контрольную сумму, которая будет вашим ожидаемым результатом. Затем выполните проверку контрольных сумм для "tamper.class", как вы это сделали в своем коде, и убедитесь, что оно соответствует ожидаемому результату.

Это то, что вы пытаетесь сделать?

...