# BigInteger nach ASCII Code in String



## christina. (26. Mrz 2011)

hallo!

ich möchte die RSA Verschlüsselung programmieren und habe ein Problem damit, wie ich die entschlüsselten Zahlen vom Typ BigInteger wieder gemäß des ASCII Codes in einen String bekomme..

denn einfach die Methode toString(); anwenden geht ja nicht, dann habe ich die Zahlen einfach als String gespeichert..
beim umwandeln von buchstaben in zahlen habe ich zunächst die Methode 
	
	
	
	





```
toCharArray()
```
 verwedent und danach
	
	
	
	





```
Character.getNumericValue()
```
. das problem dabei ist auch, dass man die zahlen dann als int werte übergeben bekommt, ich diese aber in ein BigInteger speichern muss.

wichtiger ist aber, dass ich von den BigIntegern wieder zum String komme...

wer ideen hat, bitte melden


----------



## SlaterB (28. Mrz 2011)

noch aktuell? dann bitte noch einmal in Ruhe von Anfang an mit Beispiel und nicht soviel auf einmal,
BigInteger nach String, String nach BigInteger, String nach ASCII, einzelne Zeichen??


----------



## christina. (28. Mrz 2011)

absolut noch aktuell. leider keine lösung bisher gefunden. 
also:
ich möchte die rsa verschlüsselung programmieren. dazu muss man die wörter erst in zahlen umwandeln. die soll anhand des ascii codes passieren.
also beispiel das wort "hallo" ergibt laut dem ascii code "104.97.108.108.111" theoretisch kann man das per typecast machen. das sieht bei mir so aus:

```
public int buchstabeInZahl(char p)
    {
        int i = (int)p;
        BigInteger ii= new BigInteger ("p");
        return i;
     }
```
 leider funktioniert das glaube ich nicht bei den von mir verwendeten typ bigInteger. ich weiß nun leider nicht, wie ich das mit bigIneter machen soll.

dann weiß ich nicht, wie das zurück laufen soll. also aus den zahlen wieder buchstaben/wörter zu machen. mit typecast sieht das bei mir wieder so aus :

```
public char zahlInBuchstabe (int i)
    {
        char c = (char)i;
        return c;
        
    }
```
das ist ja an sich nicht schwer, leider weiß ich nur wieder nicht, wie das mit bigIntegern ablaufen soll..
hat jemand eine idee?


----------



## dehlen (28. Mrz 2011)

Ne du musst es anders machen:

```
public String decode(String str) {
        StringBuilder result = new StringBuilder();
 
       //Du musst erstmal zwischen alle wörter einen seperator schalten, dann beim decode splittest du an der Stelle
        String[] tokens = str.split(separator+"+");
 
        Dann musst du jedes Wort das du gesplittet hast durchlaufen und in einem String speichern
        for (int i = 0; i < tokens.length; i++) {
            String s = tokens[i];
            // Und dann musst du diese Blöcke als BigInteger betrachten und entschlüsseln
            result.append((char) decode(new BigInteger(s)).intValue()); //Wichtig für dich ist diese Zeile!
}

 public BigInteger decode(BigInteger c) {
        return c.modPow(d, n);
    }
```


----------



## christina. (28. Mrz 2011)

vielen vielen dank schonmal!!!!
aber wie sähe das aus, wenn ich nur 1 wort eingeben kann?
vll habe ich grad nen denkfehler drin oder so aber ich kann mir das ehrlich gesagt gerade nciht so vorstellen, das verwirtt splitten mich ein wenig^^
muss ich, damit "seperator" läuft noch irgend ein package einfügen? irgendwie konnte ich das bei mir nicht übersetzen..


----------



## dehlen (28. Mrz 2011)

achso dachte du hättest ein Programm wo man mehrere Wörter als Text eingeben kann.
Ja in dem Fall musst du natürlich nichts splitten.


----------



## christina. (28. Mrz 2011)

und wenn ich noch etwas fragen darf:
wie komme ich wieder zurück zum string??


----------



## Ebur (28. Mrz 2011)

Kleine Frage an dich wieviel Bit ist ein charakter, und wieviel Bit ist ein BigInteger groß?
Dannach können wir weiter machen.


----------



## dehlen (28. Mrz 2011)

du hast doch am ende einen String ?!
du rufst doch die methode append auf mit der du den String "zusammenklebst"


----------



## christina. (29. Mrz 2011)

ich meine umgekehrt, also wie komme ich vom biginteger zurück zum string??
irgend einen tipp?


----------



## dehlen (29. Mrz 2011)

Du hast doch am ende der decode methode einen STRING !
du hast :

```
StringBuilder result = new StringBuilder();
```

und dann am ende fügst du doch den StringBuilder result zusammen:

```
result.append((char) decode(new BigInteger(s)).intValue());
```

und am Ende der Methode result zurückgeben:

```
return result.toString();
```


----------



## christina. (29. Mrz 2011)

vielen dank für die hilfe!!
habe das problem gelöst !


----------

