Simple file Encryption - decryption program

Συζητήσεις για την Java

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
lid_989
Δημοσιεύσεις: 22
Εγγραφή: 17 Δεκ 2009 15:16
Τοποθεσία: Prague
Επικοινωνία:

Simple file Encryption - decryption program

Δημοσίευση από lid_989 » 17 Δεκ 2009 15:30

Γεια χαρα σε ολους. Θα ηθελα να σας παρακαλεσω εαν μπορουσατε να με βοηθεισετε με την εργασεια του εξαμηνου μου. Το προγραμμα που πρεπει να γραψω ζειταει απο τον χριστη ενα κλειδει. Μετα ζειταει να ανοιξει ενα αρχειο κειμενου. (Το προγραμμα προωριζετε για .txt αρχεια μονο) Οταν δωσο το προγραμμα. τοτε πρεπει να το κανω encrypt. To μονο προβλημα ειναι οτι δν ξερω πως. Ρειξτε μια ματια στον κωδικα που εχω μεχι στηγμης. (Αν γεινετε να κανω απο char to int. θα ειναι καλητερα.)

Κώδικας: Επιλογή όλων

import java.util.*;
import java.io.*;
/**
 *
 * @version 1.0
 * @author tziokioa
 * @author chaos.mk.cvut.cz/~tziokasi/
 *
 */


public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws FileNotFoundException, IOException {

        //declate variables.
        String fileName, ciphertext, cr;
        int key, c;

        //create scanner
        Scanner scn = new Scanner(System.in);
        
       
        
        // ask for encryption key.
        Print("Zadejte syfrovani klic: ");

        //User defined key.
        key = scn.nextInt();

        //asks the file from user.
        Print("zadejte jmeno soubory ktery chcete syfrovat: ");

        //User Defined file
        fileName = scn.next();

        //create filereader
          FileReader fr = new FileReader(fileName);

             //import and print the text.
             while ((c = fr.read()) != -1)
             Print((char) c);

             // String conversion from char.
            // cr = Character.toString((char) c);

             //string add.
             ciphertext = cr;

             // end of file reader.
             fr.close();


           //print space to next line.
             Print(" ");



          // encrypt the message.
          encryptionMethod(ciphertext, key);

          //create filewriter
         // FileWriter fw = new FileWriter("ciphertext.txt");




          // print the encoded message.
          Print("Ciphertext: " + ciphertext);
         
       

   }


// this is the encryption method.
    private static String encryptionMethod(String c, int key) {
if &#40;key < 0&#41; &#123;
key = 26 - &#40;-key % 26&#41;;
&#125;
String result = "";
for &#40;int i = 0; i < c.length&#40;&#41;; i++&#41; &#123;
char ch = CharEncr&#40;c.charAt&#40;i&#41;, key&#41;;
result += ch;
&#125;
return result;
&#125;

   //this is the character encryption.
    private static char CharEncr&#40;char ch, int key&#41; &#123;
if &#40;Character.isLetter&#40;ch&#41;&#41; &#123;
ch = &#40;char&#41; &#40;'A'
+ &#40;Character.toUpperCase&#40;ch&#41; - 'A' + key&#41; % 26&#41;;
&#125;
return ch;
&#125;

   
// the following Print methods where created me for fast typing of the System.out.Print method
    private static void Print&#40;String str&#41;&#123;
        System.out.println&#40;str&#41;;
    &#125;

    private static void Print&#40;char c&#41;&#123;
         System.out.print&#40;c&#41;;
    &#125;



&#125;

lid_989
Δημοσιεύσεις: 22
Εγγραφή: 17 Δεκ 2009 15:16
Τοποθεσία: Prague
Επικοινωνία:

Simple file Encryption - decryption program

Δημοσίευση από lid_989 » 17 Δεκ 2009 15:46

Το προγγραμμα εινα στα τσεχικα αλλα με αγγλικα comment

Άβαταρ μέλους
soteres2002
S. & H. Moderator
Δημοσιεύσεις: 1524
Εγγραφή: 05 Μαρ 2004 22:17
Τοποθεσία: Ιωάννινα

Simple file Encryption - decryption program

Δημοσίευση από soteres2002 » 18 Δεκ 2009 03:58

πρέπει να χρησιμοποιήσεις το java crypto toolkit που είναι στο standard bundle... Google it και δεν είναι ιδιαίτερα δύσκολο, μάλιστα μπορείς να βρείς code sample και στο internet.

Άβαταρ μέλους
virxen75
Δημοσιεύσεις: 493
Εγγραφή: 18 Φεβ 2009 00:17
Τοποθεσία: ΗΡΑΚΛΕΙΟ ΚΡΗΤΗΣ

Simple file Encryption - decryption program

Δημοσίευση από virxen75 » 18 Δεκ 2009 10:51

Κώδικας: Επιλογή όλων

import java.util.*;
import java.io.*;
/**
 *
 * @version 1.0
 * @author tziokioa
 * @author chaos.mk.cvut.cz/~tziokasi/
 *
 */


public class Main &#123;

    /**
     * @param args the command line arguments
     */
    public static void main&#40;String&#91;&#93; args&#41; throws FileNotFoundException, IOException &#123;

        //declate variables.
        String fileName="", ciphertext="", cr="";
        String eachLine;
        int key=0, c;
        //create scanner
        Scanner scn = new Scanner&#40;System.in&#41;;
        // ask for encryption key.
        Print&#40;"Zadejte syfrovani klic&#58; "&#41;;
        key = scn.nextInt&#40;&#41;;
        //asks the file from user.
        Print&#40;"zadejte jmeno soubory ktery chcete syfrovat&#58; "&#41;;
        //User Defined file
        fileName = scn.next&#40;&#41;;
        //create filereader
          FileReader fr = new FileReader&#40;fileName&#41;;
          BufferedReader br = new BufferedReader&#40;fr&#41;;
          FileWriter fw = new FileWriter&#40;"ciphertext.txt"&#41;;
             //import and print the text.
             while &#40;&#40;eachLine= br.readLine&#40;&#41;&#41;!= null&#41;&#123;
             	Print&#40;"unencrypted&#58;"+eachLine&#41;;
               // encrypt the message.
             	String encrypted=encryptionMethod&#40;eachLine,key&#41;;
             	fw.write&#40;encrypted + "\n"&#41;;
                // print the encoded message.
             	Print&#40;"encrypted&#58;"+encrypted+"\n"&#41;;
             &#125;
             // end of file reader.
             fr.close&#40;&#41;;
             // end of file writer.
             fw.close&#40;&#41;;
           //print space to next line.
             Print&#40;" "&#41;;


   &#125;


// this is the encryption method.
    private static String encryptionMethod&#40;String c, int key&#41; &#123;
	if &#40;key < 0&#41; &#123;
		key = 26 - &#40;-key % 26&#41;;
	&#125;
	String result = "";
	for &#40;int i = 0; i < c.length&#40;&#41;; i++&#41; &#123;
		char ch = CharEncr&#40;c.charAt&#40;i&#41;, key&#41;;
		result += ch;
	&#125;
	return result;
&#125;

   //this is the character encryption.
    private static char CharEncr&#40;char ch, int key&#41; &#123;
		if &#40;Character.isLetter&#40;ch&#41;&#41; &#123;
			ch = &#40;char&#41; &#40;'A'+ &#40;Character.toUpperCase&#40;ch&#41; - 'A' + key&#41; % 26&#41;;
		&#125;
		return ch;
&#125;

   
// the following Print methods where created me for fast typing of the System.out.Print method
    private static void Print&#40;String str&#41;&#123;
        System.out.println&#40;str&#41;;
    &#125;




&#125; 
δες τις αλλαγές και ότι δεν καταλαβαίνεις πες μου

lid_989
Δημοσιεύσεις: 22
Εγγραφή: 17 Δεκ 2009 15:16
Τοποθεσία: Prague
Επικοινωνία:

Simple file Encryption - decryption program

Δημοσίευση από lid_989 » 18 Δεκ 2009 12:49

Ευχαριστω πολύ για την βοηθεια σας.
Φίλε soteres2002 καλή η συμβουλή σου αλλα ηθελα να κανω την δουλια μου με τη μεθοδο που εχω στο προγραμμα.

Φιλέ virxen75. Για αλλη μια φωρα κανεις το θαυμα σου. Σε ευχαριστω. Εχεις καταλαβει ακριβος τι ήθελα. Ηθελα ομως να σε ρωτησω (για προσωπική μου χρήση)

δεν καταλαβα ακρηβος την χρισή του BufferedReader br = new BufferedReader(fr); και γενικα του BufferedReader.

Άβαταρ μέλους
virxen75
Δημοσιεύσεις: 493
Εγγραφή: 18 Φεβ 2009 00:17
Τοποθεσία: ΗΡΑΚΛΕΙΟ ΚΡΗΤΗΣ

Simple file Encryption - decryption program

Δημοσίευση από virxen75 » 18 Δεκ 2009 14:06


lid_989
Δημοσιεύσεις: 22
Εγγραφή: 17 Δεκ 2009 15:16
Τοποθεσία: Prague
Επικοινωνία:

Simple file Encryption - decryption program

Δημοσίευση από lid_989 » 19 Δεκ 2009 18:06

Και μια ακόμη απορια τι ειναι αυτο&#8158; String[] args στην μειν ;

Άβαταρ μέλους
virxen75
Δημοσιεύσεις: 493
Εγγραφή: 18 Φεβ 2009 00:17
Τοποθεσία: ΗΡΑΚΛΕΙΟ ΚΡΗΤΗΣ

Simple file Encryption - decryption program

Δημοσίευση από virxen75 » 19 Δεκ 2009 18:21


Άβαταρ μέλους
Pavel
Honorary Member
Δημοσιεύσεις: 1046
Εγγραφή: 08 Αύγ 2003 00:05
Τοποθεσία: UK

Simple file Encryption - decryption program

Δημοσίευση από Pavel » 19 Δεκ 2009 22:41

virxen75 online help είσαι.

hahahahaha
Εσύ είσαι τρελός.

lid_989
Δημοσιεύσεις: 22
Εγγραφή: 17 Δεκ 2009 15:16
Τοποθεσία: Prague
Επικοινωνία:

Simple file Encryption - decryption program

Δημοσίευση από lid_989 » 20 Δεκ 2009 19:52

Απ&#8125;οτι καταλαβα ολά ειναι εκει μεσα java.sun.com. Φιλε virxen75 για μια ακομη φωρα σε ευχαριστω. Μηπως εχεις να μου προτινεις καποιο βιβλιο ή βιβλια; για την java?

Άβαταρ μέλους
virxen75
Δημοσιεύσεις: 493
Εγγραφή: 18 Φεβ 2009 00:17
Τοποθεσία: ΗΡΑΚΛΕΙΟ ΚΡΗΤΗΣ

Simple file Encryption - decryption program

Δημοσίευση από virxen75 » 20 Δεκ 2009 20:06

για σημειώσεις στα ελληνικά εδώ

javakias.blogspot.com/2007/07/java-tutorials.html


για βιβλίο στα αγγλικά
υπάρχουν πολλά
αν θες σου προτείνω.

lid_989
Δημοσιεύσεις: 22
Εγγραφή: 17 Δεκ 2009 15:16
Τοποθεσία: Prague
Επικοινωνία:

Simple file Encryption - decryption program

Δημοσίευση από lid_989 » 21 Δεκ 2009 01:44

Θα ηταν πολύ ευγενικο εκ μερους σου να προτινεις καποιους τιτλους

lid_989
Δημοσιεύσεις: 22
Εγγραφή: 17 Δεκ 2009 15:16
Τοποθεσία: Prague
Επικοινωνία:

Simple file Encryption - decryption program

Δημοσίευση από lid_989 » 23 Δεκ 2009 02:53

Σκεφτομαι να επεκτινω το προγραμμα λιγο παραπανω. Οταν ο χριστεις τρεχει το προγραμμα με args "-e" τοτε αυτο θα κανει encrypt και οταν το args ειναι "-d" τοτε θα κανει decrypt αρχειο που επιλεγει ο χριστεις. Το decrypt θα γινετε με ενα loop οπου θα κανει καθε φωρα decrypt. απο το 1 μεχρι το 26. Τα αποτελεσματα θα γραφονται στο αρχειο ciphertext2.txt

Εδω ειναι το προγραμμα με τα args -e και -d μπορειτε να μου πειτε τι κανω λαθος;

Κώδικας: Επιλογή όλων

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package janiskeyencrypter;

import java.util.*;
import java.io.*;
/**
 *
 * @version 1.0
 * @author tziokioa
 * 
 *
 */


public class Main &#123;

    /**
     * @param args the command line arguments
     */
    public static void main&#40;String&#91;&#93; args&#41; throws FileNotFoundException, IOException &#123;


        //declate variables.
        String fileName="", ciphertext="", cr="";
        String eachLine;
        int key=0, c;

        //create scanner
        Scanner scn = new Scanner&#40;System.in&#41;;

      if &#40;args&#91;0&#93;.startsWith&#40;"-e"&#41;&#41; &#123; // edw einai to proto args

        //asks the file from user.
        Print&#40;"zadejte jmeno soubory ktery chcete sifrovat&#58; "&#41;;
         //User Defined file
        fileName = scn.next&#40;&#41;;

          // ask for encryption key.
        Print&#40;"Zadejte syfrovani klic&#58; "&#41;;
        key = scn.nextInt&#40;&#41;;

       

        

        //create filereader
          FileReader fr = new FileReader&#40;fileName&#41;;
          BufferedReader br = new BufferedReader&#40;fr&#41;;
          FileWriter fw = new FileWriter&#40;"Ciphertext.txt"&#41;;

          //import and print the text.
             while &#40;&#40;eachLine= br.readLine&#40;&#41;&#41;!= null&#41;&#123;
                Print&#40;"nesifrovane&#58; "+eachLine&#41;;

                // encrypt the message.
                String sifrovane=encryptionMethod&#40;eachLine,key&#41;;
                fw.write&#40;sifrovane + "\n"&#41;;

                // print the encoded message.
                Print&#40;"sifrovane&#58; "+sifrovane+"\n"&#41;;
             &#125;
             // end of file reader.
             fr.close&#40;&#41;;
             // end of file writer.
             fw.close&#40;&#41;;
           //print space to next line.
             Print&#40;" "&#41;;


   &#125; else if &#40;args&#91;0&#93;.startsWith&#40;"-d"&#41;&#41;&#123;
         for &#40;int i =0; i <= 26; i++&#41;&#123;
             //asks the file from user.
        Print&#40;"zadejte jmeno soubory ktery chcete sifrovat&#58; "&#41;;
         //User Defined file
        fileName = scn.next&#40;&#41;;
             FileReader fr = new FileReader&#40;fileName&#41;;
          BufferedReader br = new BufferedReader&#40;fr&#41;;
          FileWriter fw = new FileWriter&#40;"Ciphertext2.txt"&#41;;

          //import and print the text.
             while &#40;&#40;eachLine= br.readLine&#40;&#41;&#41;!= null&#41;&#123;
                Print&#40;"sifrovane&#58; "+eachLine&#41;;

                // encrypt the message.
                String sifrovane=encryptionMethod&#40;eachLine,i&#41;;
                fw.write&#40;sifrovane + "\n"&#41;;

                // print the encoded message.
                Print&#40;"nesifrovane&#58; "+sifrovane+"\n"&#41;;
             &#125;
             // end of file reader.
             fr.close&#40;&#41;;
             // end of file writer.
             fw.close&#40;&#41;;
           //print space to next line.
             Print&#40;" "&#41;;
         &#125;
   &#125;
    &#125;

// this is the encryption method.
    private static String encryptionMethod&#40;String c, int key&#41; &#123;
   if &#40;key < 0&#41; &#123;
      key = 26 - &#40;-key % 26&#41;;
   &#125;
   String result = "";
   for &#40;int i = 0; i < c.length&#40;&#41;; i++&#41; &#123;
      char ch = CharEncr&#40;c.charAt&#40;i&#41;, key&#41;;
      result += ch;
   &#125;
   return result;
&#125;

   //this is the character encryption.
    private static char CharEncr&#40;char ch, int key&#41; &#123;
      if &#40;Character.isLetter&#40;ch&#41;&#41; &#123;
         ch = &#40;char&#41; &#40;'A'+ &#40;Character.toUpperCase&#40;ch&#41; - 'A' + key&#41; % 26&#41;;
      &#125;
      return ch;
&#125;






// the following Print methods where created me for fast typing of the System.out.Print method
    private static void Print&#40;String str&#41;&#123;
        System.out.println&#40;str&#41;;

    &#125;

&#125;
[/code]

Άβαταρ μέλους
virxen75
Δημοσιεύσεις: 493
Εγγραφή: 18 Φεβ 2009 00:17
Τοποθεσία: ΗΡΑΚΛΕΙΟ ΚΡΗΤΗΣ

Simple file Encryption - decryption program

Δημοσίευση από virxen75 » 23 Δεκ 2009 11:29

1) θες συνάρτηση που θα κάνει την αντίστροφη κίνηση
δηλαδή decrypt

2) το for δεν το κατάλαβα,δεν χρειάζεται

3) args[0].startsWith("-d") δεν κάνει αυτό που θες
π.χ. arg--->-ddfhgdfhgdf

-πρέπει να δεις το μέγεθος του να είναι 1 αφού θες μια παράμετρο
-πρέπει η παράμετρος να είναι -e ή -d και μόνο αυτό, να είναι
ίσα δηλαδή αγνοώντας το case (μικρά/κεφαλαία)
-αν η σύνταξη της εντολής (παράμετροι) δεν είναι η επιθυμητή τότε
μήνυμα λάθους με την σωστή σύνταξη και έξοδος από το πρόγραμμα


για το 3)

Κώδικας: Επιλογή όλων

    public static void main&#40;String&#91;&#93; args&#41; throws FileNotFoundException, IOException &#123;
        if &#40;args.length!=1&#41;&#123;
        	 System.out.println&#40;"correct syntax&#58; java Main -e or java Main -d"&#41;;
        	 System.exit&#40;1&#41;;
        &#125;
        if &#40;!args&#91;0&#93;.equalsIgnoreCase&#40;"-e"&#41; && !args&#91;0&#93;.equalsIgnoreCase&#40;"-d"&#41;&#41;&#123;
        	 System.out.println&#40;"correct syntax&#58; java Main -e or java Main -d"&#41;;
        	 System.exit&#40;1&#41;;
        &#125;
        //declate variables.

lid_989
Δημοσιεύσεις: 22
Εγγραφή: 17 Δεκ 2009 15:16
Τοποθεσία: Prague
Επικοινωνία:

Simple file Encryption - decryption program

Δημοσίευση από lid_989 » 23 Δεκ 2009 16:33

Με την for προσπαθω να κανω decrypt με καθε δυνατο κλδι απο -26 μεχρι το 26 και να γραψω το αποτελεσμα σε ενα καινουργιο κειμενο.

Απάντηση

Επιστροφή στο “Java”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες