# "Einfache Verschlüsselung"



## uwe (1. Jun 2006)

Hallo, 
ich möchte eine ganz einfache String-verschlüsselung erzeugen, die aber auch wieder in String umgewandelt werden kann.

Kann mir jemand helfen?


----------



## Eldaron (1. Jun 2006)

Es kommt drauf an, wie "einfach" die Verschlüsselung sein soll, Du könntest (im primitivsten Fall) einfach den String in ein CharArray zerlegen und auf die einzelnen Werte etwas drauf addieren. Damit bekommste einen "verschobenen" String. Käme halt auf die gewünschte Verwendung an.


----------



## uwe (1. Jun 2006)

Super Idee, danke, doch am liebsten wäre mir das ganze in Hex umzuwandeln.


----------



## norman (1. Jun 2006)

hab das nicht getestet, aber das müsste die jeweiligen hex-werte in den Vector schreiben:

```
String str = "test";
Vector hex = new Vector();
for (char c : str) {
  hex.add( Integer.toHexString( (int) c ) );
}
```


----------



## uwe (1. Jun 2006)

Was macht der Doppelpunkt?


----------



## norman (1. Jun 2006)

für jeden char c in/aus str, tue..


----------



## uwe (1. Jun 2006)

Aber wie bekomme ich wieder hex in String ?


----------



## norman (1. Jun 2006)

vielleicht in einer schleife mit 
Integer.toString( (int) hex.get(0), 2);

vielleicht aber auch nicht ;-)
(2 ist die basis)


----------



## Illuvatar (1. Jun 2006)

also

```
for (char c : str)
```
dürfe eigentlich nicht funktionieren, String ist ja nicht Iterable...
höchstens

```
for (char c : str.toCharArray())
```


----------



## norman (1. Jun 2006)

ja, das habe ich auch gerade gemerkt. 

```
public static Vector strToHex(String str) {
		Vector hex = new Vector();
		for (char c : str.toCharArray()) {
		  hex.add( Integer.toHexString( /* (int) */ c ) );
		} 		
		return hex;
	}
```
funktioniert soweit. den rückweg weiß ich jetzt aber auch nicht; habe noch nie was mit hex zu tun gehabt bisher :/

[edit] ach ja, den cast kann man sich auch noch sparen [/edit]


----------



## norman (1. Jun 2006)

ich wusste doch, dass das zu schaffen ist 
(trotzdem noch quick'n'dirty)

```
public class Testklasse {	

	public static Vector strToHex(String str) {
		Vector<String> hex = new Vector<String>();
		for (char c : str.toCharArray()) {
		  hex.add( Integer.toHexString( c ) );
		} 		
		return hex;
	}
	
	public static String hexToStr(Vector hex) {
		String wort="";
		for (int i=0; i< hex.size(); i++) {
			int intwert = Integer.parseInt(hex.get(i).toString(),16);
			wort +=(char) intwert;
		}
		return wort;
	}
	
	public static void main( String[] args ) {
		Vector hex = strToHex("test");
		System.out.println("\"verschlüsselte\" hex werte: " + hex);
		
		String nor = hexToStr(hex);
		System.out.println("wieder entschlüsselt: " + nor);
	} 
}
```


----------



## Gelöschtes Mitglied 5909 (1. Jun 2006)

du könntest auch ne Xor verschlüsseung benutzen, dann kann mans garnichmehr lesen 
is auch einfach und relativ effektiv


----------



## RawBit (1. Jun 2006)

ich würde dir die einfachste verschlüsselung empfehlen: ROT13

da wird jedem buchstaben 13 hinzugefügt

also a wäre dann n usw...
lässt sich logischerweise auch wieder entschlüsseln...


----------



## Caffè Latte (1. Jun 2006)

Uv,

nyfb iba Irefpuyüffryhat xnaa orv EBG13 avpug trfcebpura jreqra ...


http://www.pflock.de/rot13.htm


----------



## RawBit (1. Jun 2006)

Anwn rf vfg avpug qre fvpurefgr jrt nore vzzreuva rvar irefpuyüffryhat... 

CF: vpu uäggr zve trqnpug qnff qh qve qra ebg13 ire/ragfpuyüffryre fryofg cebtenzzvrefg...


----------



## flo_richi (1. Jun 2006)

Hab vor kurzem mal was geschrieben...


```
//***********************************Encrypt************************************
public String encrypt(String str_enc, int a, int b, int c)
 {
   byte[] ascii = str_enc.getBytes();
   for(int i=0; i<(str_enc.length()); i++)
   {
    ascii[i] += a;
   }
    for(int i=1; i<(str_enc.length()); i+=2)
   {
    ascii[i] += b;
   }
    for(int i=0; i<(str_enc.length()); i+=2)
   {
    ascii[i] += c;
   }
   String str1 = new String(ascii);
   return str1;
 }
//***********************************Decrypt************************************
 public String decrypt(String str_dec, int a, int b, int c)
 {
   byte[] ascii = str_dec.getBytes();
   for(int i=0; i<(str_dec.length()); i++)
   {
    ascii[i] -= a;
   }
    for(int i=1; i<(str_dec.length()); i+=2)
   {
    ascii[i] -= b;
   }
    for(int i=0; i<(str_dec.length()); i+=2)
   {
    ascii[i] -= c;
   }
   String str2 = new String(ascii);
   return str2;
 }
```

Basiert auf dem Additionsprinzip. Zuerst wird zu dem gesamten String der Wert "a" dazugezählt. Dann zu jeden "ungeraden" b und zu jeden "geraden" c. 
Damit verhindere ich das zb. der String "klammer" so aussieht: "Xynzzr". 
Mit "gerader,ungerader" Verschlüsselung: "]|s}u"  somit sind die zwei "zz" gleich "}" und eine Symmetrie kann fast nicht mehr abgelesen werden...


----------



## Caffè Latte (1. Jun 2006)

Qnf zvg qrz Cebtenzzvrera xöaagr vpu fbtne nyf Nasäatre abpu, ahe rkgen rva WNE qnsüe vetraqjb ubpuynqra jbyygr vpu nhpu avpug.

Wrgmg nore Fpuyhff uvrezvg, fbafg xevrtra jve abpu orfhpu ibz OAQ, qre qnf avpug ragfpuyüffryg orxnz *yby*


----------



## flo_richi (2. Jun 2006)

Caffè Latte hat gesagt.:
			
		

> das mit dem programmieren könnte ich sogar als anfänger auch, nur extra ein jar dafür irgendwo hochladenwollte ich auch nicht.



Warum "DND?" =>  :?: Department of National Defence (Canada)


----------

