# Problem mit TextField



## Django Kanasta (19. Apr 2007)

hallo zusammen,

ich hab folgendes vor:

ich habe ein verschlüsselungsprogramm geschrieben (RSA-Verschlüsselung) und nun muss ich zur entschlüsselung
die verschlüsselten werte (double variablen) irgendwie in ein array bekommen. die eingabe der werte erfolgt über ein JTextField.

was habe ich da für möglichkeiten?

als char array das ganze anzulegen ist kein problem, da vom TextField immer ein string übergeben wird. kann ich das char array in ein array vom typ double parsen oder kann man über ein TextField direkt double zahlen einlesen?

danke schon mal 

gruß
DJango


----------



## Wildcard (19. Apr 2007)

Was machst du denn mit double Variablen bei RSA Verschlüsselung?
Das wird nie funktionieren.


----------



## Jango (19. Apr 2007)

Django Kanasta hat gesagt.:
			
		

> ...kann man über ein TextField direkt double zahlen einlesen?



Nein, nur string... :wink:


----------



## Django Kanasta (19. Apr 2007)

hallo,

das funktioniert bisher soweit, dass ich einen String z.b "Hallo" eingebe und mir das programm diesen text über die formeln in zahlen verschlüsselt (RSA halt ^^). und nun möchte ich den verschlüsselten String (also die zahlen) eingeben und das programm soll mir das ganze wieder zurückberechnen. 

das ganze habe ich vorher mit nur einem zeichen ausprobiert (z.b "H") mit einem zeichen funktioniert die ver- sowie die entschlüsselung. das problem, dass ich bei der entschlüsselung nun hab (da ich ja nun ganze strings verschlüsseln will) habe ich ja gerade beschrieben.

ach und warum double? weiß ich auch nicht ^^ hätte auch integer nehmen können... sollen eh nur kleine werte sein, um rsa quasi nachzufummeln...

gruß und danke!


----------



## Wildcard (19. Apr 2007)

Django Kanasta hat gesagt.:
			
		

> ach und warum double? weiß ich auch nicht ^^ hätte auch integer nehmen können... sollen eh nur kleine werte sein, um rsa quasi nachzufummeln...


RSA verwendet natürliche Zahlen und erfordert Genauigkeit.
Wenn es mit double funktioniert war das reines Glück für eine bestimmte Eingabe.


----------



## Django Kanasta (19. Apr 2007)

mal davon abgesehen, dass es mehr oder weniger egal ist ob ich nun die zahl 32 als int oder als double nehme... kannst du mir bei meinem problem helfen?

gruß


----------



## Wildcard (19. Apr 2007)

> mal davon abgesehen, dass es mehr oder weniger egal ist ob ich nun die zahl 32 als int oder als double nehme


Nein, ist es nicht


> kannst du mir bei meinem problem helfen?


Lass dir vom Textfeld einen String geben und von diesem ein char[].
chars sind auch nur ints, damit kannst du rechnen. Vergiss einfach double, dann löst du 2 Probleme auf einmal.


----------



## Django Kanasta (19. Apr 2007)

das habe ich so gemacht:



```
char   array1[]    =   text.getText().toCharArray();
```

und nun will ich die einzelnen elemente durchgehen und verschlüsseln:


```
array2[x]=Math.pow(array1[x], e); //das ganze inner schleife ^^
```


----------



## Wildcard (19. Apr 2007)

und?


----------



## Django Kanasta (19. Apr 2007)

also bei:


```
array1[x]=Math.pow(array2[x], e);
```
 sagt er, dass er nicht von double in int konvertieren kann... keine ahnung warum, denn ich hab nicht eine double variable im programm. also ist nichts mit berechnung...

danke


----------



## Guest (19. Apr 2007)

und wenn ich das ganze so mache, 


```
array1[x]=pow(array2[x], e);   //ohne Math.
```

sagt er "the method pow (char, int) is undefined"...


----------



## Wildcard (19. Apr 2007)

Du musst casten.


----------



## DJango Kanasta (19. Apr 2007)

hmm hast recht... das könnte klappen.

wie mach ich das demm am besten?


----------



## Django Kanasta (19. Apr 2007)

so siehts nu aus...


```
array2[x]=Math.pow(((int)array1[x]), e);
```

jetzt sagter wenn ich Math.pow nehmen, dass er nicht von double in int konvertieren kann und wenn ich nur pow nehme, sagt er, dass die funktion pow nicht mit (int,int) funzt... naja, zumindest das casten hat anscheinend gefunzt...
noch ne idee?

gruß


----------



## Guest (20. Apr 2007)

Django Kanasta hat gesagt.:
			
		

> so siehts nu aus...
> 
> 
> ```
> ...



Die Methode Math#pow erwartet 2 Double-Werte (Math.pow(double,double). Wenn e also kein Double-Wert ist wird sich der Compiler auch beschweren. 

Kleiner Tip: Mal in die API schauen hilft bei sowas u. U. weiter


----------



## Guest (20. Apr 2007)

Django Kanasta hat gesagt.:
			
		

> so siehts nu aus...
> 
> 
> ```
> ...



Also was mein Vorschreiber geschrieben hat kann vielleicht sein. Aber deine Fehlermeldung deutet auf was anderes hin!   

Ne im Ernst, Math#pow arbeitet mit double und gibt auch double zurück. Wenn du jetzt versucht den Rückgabewert in dein Array zu speichern kann er das nicht (schätze im Array sind ints). 

Du musst also den von pow zurück gegebenen Wert wieder in int umwandeln


```
array2[x]=(int)Math.pow(((int)array1[x]), e);
```

Sollte eigentlich gehen


----------



## Django Kanasta (20. Apr 2007)

Meinen allerherzlichsten dank ^^

also das mit dem casten hat funktioniert... hatte mich gewundert warum er immer fehler ausspuckte, bis mir, wie du auch gerade sagtest, aufgefallen ist, dass die funktion pow 2 double werte erwartet.

danke erstmal an alle! ich melde mich, wenn ich noch was hab ^^

gruß


----------



## Django Kanasta (20. Apr 2007)

da bin ich schon wieder ^^

ich habe gerade die berechnungen durchgeführt... funktioniert alles soweit ganz gut. allerdings ist der bereich von integer relativ begrenzt. nach ein wenig googlen habe ich gefunden, dass es die klasse BigInteger gibt, die beliebig große zahlen generiert.

nun wollte ich mit 
	
	
	
	





```
BigInteger        n=247;
```
 eine variable anlegen.

er kann aber anscheinend nichts mit der zahl 247 anfangen. muss man BigInteger zahlen anders deklarieren? ich mein, dass ist ja ne klasse und kein einfacher datentyp. muss man die zahl generieren? oder muss ich eine klasse noch implementieren?

gruß


----------



## Django Kanasta (20. Apr 2007)

moin moin,

neues problem ^^

wie bekomme ich einen zurückgegebenen string von einem JTextField in ein array vom typ BigInteger?

gruß


----------



## Wildcard (20. Apr 2007)

Und wieder hätte dir ein einfacher Blick in die API genügt.
http://java.sun.com/javase/6/docs/api/java/math/BigInteger.html#BigInteger(java.lang.String)
Je nach Zahlengröße musst du dich entscheiden ob du BigInteger oder long verwenden willst.
BigInteger ist zwar sehr praktisch, leider aber auch recht langsam.


----------



## Django Kanasta (20. Apr 2007)

ich komm mit der api net klar. hab mir die seiten mit BigInteger bevor ich hier geschrieben habe schon durchgelesen. ich werde daraus nicht schlau...

danke und gruß


----------



## Wildcard (20. Apr 2007)

```
BigInteger i = new BigInteger(string);
```
Ging doch deutlich genug aus der API hervor.
Als Tipp am Rande:
Wenn du damit Probleme hast musst du unbedingt den Umgang mit der API lernen.
Darin werden nicht nur alle Klassen der J2SE beschrieben, sondern auch alle Libs die du später mal verwenden willst verlassen sich in Punkto Dokumentation primär auf Javadocs aus denen die entsprechende API-Doc generiert wird.


----------



## Guest (20. Apr 2007)

Wildcard hat gesagt.:
			
		

> Wenn du damit Probleme hast musst du unbedingt den Umgang mit der API lernen.
> Darin werden nicht nur alle Klassen der J2SE beschrieben, sondern auch alle Libs die du später mal verwenden willst verlassen sich in Punkto Dokumentation primär auf Javadocs aus denen die entsprechende API-Doc generiert wird.



ich werds nochmal versuchen. allerdings bin ich noch "relativ" neu in sachen programmieren und komme mit beispielen erstmal besser klar... ich weiß auch nicht, irgendwie ist mir das zu kompliziert...

das mit der deklaration hab ich jetzt verstanden.

nun soll das programm aber folgendes machen:

1. string wird nach eingabe des öffentlichen schlüssels in einem textfeld übergeben und in BigInteger gecastet
2. aus einem anderen textfeld soll nun der zu verschlüsselnde text übergeben werden. der muss aber dann für spätere operationen in ein array vom typ BigInteger gelegt werden.

ich wollte das so machen, dass ein zeichen in das ascii zeichen konvertiert wird (bei H wäre es z.b.72), weil ich ja schlecht character in ein array vom typ BigInteger ablegen kann, bzw. aus einen vernünftigen wert berechnen kann ^^... aber wie bekomme ich das hin? fuckel hier wirklich schon ewigkeiten...

danke


----------

