[JAVA]- prosím o pomoc, radu s programem - šifrování textu – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

[JAVA]- prosím o pomoc, radu s programem - šifrování textu – Java – Fórum – Programujte.com[JAVA]- prosím o pomoc, radu s programem - šifrování textu – Java – Fórum – Programujte.com

 

MathiasX0
Duch
17. 6. 2010   #1
-
0
-

Zdravím vás
zasekl jsem se u řešení jednoho prográmku v JAVĚ.
Jedná se o toto:

Zapište kód programu v jazyce JAVA pro šifrování a dešifrování textových souborů.
Šifrování by mělo probíhat tak, že každé slovo ze souboru se zapíše v obráceném tvaru
a k tomu se obalí z obou stran písmenem ze zadaného klíče.

Například pokud bude v souboru věta: ,,venku je hezky" a klic bude ,,heslo"
tak výsledek by měl vypadat takto" hukneve sejl oykzehh.

Část kódu už mám a to tu která bere jednotlivá slova, převrací je a uzavírá soubor.



import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.StringTokenizer;

public class Ctecka {


public String soubor = null;
public String klic;
public static String vysledek ="";
FileWriter fw;
public Ctecka(String file) {

this.soubor = file;
}


public String getObsahSouboru() throws IOException { //nacita obsah textoveho souboru

String line = null;

StringBuilder builder = new StringBuilder();

File file = new File(this.soubor);

BufferedReader input = new BufferedReader(new FileReader(file));

while ((line = input.readLine()) != null) { // do string builderu pripojim radku

builder.append(line); //po dojiti konce radky pripojim oddelovac

builder.append(System.getProperty("line.separator"));
}
input.close();
return builder.toString();

}

public static String sifruj(String s){

StringTokenizer st = new StringTokenizer(s, " ,.:!?", true); // rozdeluje slova podle danych znaku

while (st.hasMoreTokens()){ //dokud jsou dalsi slova

vysledek += (new StringBuilder(st.nextToken())).reverse(); //do stringu uklada a spojuje prevracena slova

}
return vysledek;

} public void uzavriSoubor() throws IOException{
File file = new File(this.soubor);
BufferedWriter output = new BufferedWriter(new FileWriter(file));
output.write(vysledek);
output.close();


Problém mám s tím jak dopsat obalování tím heslem a také aby se heslo cyklycky opakovalo.
Přemýšlel jsem o tom že heslo bych mohl dát do pole znaků a postupně z něj načítat (v metodě sifrování), ale nejsem si jistý jak to spravně zapsat.
Předem moc díky za jakoukoliv pomoc a tipy.

Nahlásit jako SPAM
IP: 147.230.0.–
Pavel
~ Anonymní uživatel
383 příspěvků
17. 6. 2010   #2
-
0
-

Cyklické procházení polem se realizuje za pomoci matematické operace modulo (celočíselný zbytek po dělení), tedy operátoru %.

Příklad je:



String password = "heslo";
for (int i = 0; i < 100; i++) {
System.out.print(password.charAt(i % password.length()));
}

Nahlásit jako SPAM
IP: 80.250.0.–
Dominik
~ Anonymní uživatel
129 příspěvků
17. 6. 2010   #3
-
0
-

Stačí si udržovat pozici znaku v hesle a když dorazíš na poslední znak, tak pozici nastavit na nulu.

class Main{

public static void main(String[] args){
String key = "heslo";
String text = "venku je velice krasne";
String[] textArray = text.split(" ");
String sifrovanyText = "";
int pos = 0;
for(String slovo: textArray){
sifrovanyText += key.charAt(pos)+( new StringBuffer(slovo).reverse().toString());
pos++;
if(pos == key.length()) pos = 0;
sifrovanyText += key.charAt(pos)+" ";
pos++;
if(pos == key.length()) pos = 0;
}
System.out.println(sifrovanyText);
}
}

Nahlásit jako SPAM
IP: 88.146.211.–
MathiasX0
Duch
17. 6. 2010   #4
-
0
-

Zatím děkuju za rady .. zkusím si s tím ted pohrát.

Nahlásit jako SPAM
IP: 147.230.0.–
MathiasX0
Duch
17. 6. 2010   #5
-
0
-

Tak už mi jde to šifrování, převedl jsem si to do jiné třídy a metody volám z mainu.

Akorát bych ještě potřeboval poradit jak mám co nejlépe provést to dešifrování .. myslím že by stačilo vzít slovo ze zašifrovaného souboru a odstranit z jeho konců písmeno (z původního hesla).Až na to, že si opět nejsem jistý implemetací.

Budu vděčný za každou radu, předem moc díky :-)

Nahlásit jako SPAM
IP: 147.230.0.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 30 hostů

Podobná vlákna

Prosím o pomoc s programem — založil Mika

Prosím o pomoc s programem — založil null_while

Java - pomoc s programem — založil michal_XX

Java FX prosím o pomoc — založil Jarous

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý