PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Kryptographie in Java?



apollo
16-03-2003, 16:46
Hallo!

Also: Ist es (rein technisch) möglich, in Java ein Programm zu schreiben, mit dem ich dann im DOS-Prompt irgendeinen Text hineinschreibe (nach Aufruf des Programms) und dieser Text danach chiffriert wieder ausgegeben wird?

Also so: Programm starten -> Text eingeben -> Ausgabe des chiffrierten Textes.

Das Ganze soll keinen endkomplizierten Algorithmus haben, es reicht das Schema: Vertausche Buchstabe A mit Zahl 1, oder sowas in der Art.

Da mich das echt interessiert, würd ich mich freuen, jemand könnte mir sagen, wie man so ein Programm schreibt (bzw.: ob es überhaupt möglich ist.)

Danke, im Voraus

namous
16-03-2003, 17:08
also kenn mich (noch) nicht soo gut in java aus aber bin mir sicher das das möglich ist, find ich auch ein sehr interessantes thema,weil man bei kryptographie ja nie weis wer die schlüssel alles hat (BND,CIA usw.), jedoch ist kryptographie keine ganz so einfache angelegenheit!
aber verschiebe chiffren in java dürfte meines wissen kein problem darstellen, nur hab ich auchmomentan probleme mit stringbearbeitungen, vielleicht kenn ja jemand ein tutorial das er empfehlen kann!
also ich kann dir jetzt keinen code schreiben, weil wie gesagt hab ich die stringbearbeitung noch nicht so raus!

maceop
16-03-2003, 19:06
naja, kommt drauf an wie simple.

zum einen könntest du natürlich ne billige Caesar oder EXOR Verschlüsselung einbauen.

Ansonsten kannst du dir mal CipherInputStream....oder MessageDigest angucken.

mfg
maceop


---edit:-----
hab dir mal ein beispiel vom javabuch (www.javabuch.de) umgeschrieben....dort ist übrigens ein kurzes kapitel zu Kryptographie drin.



/* Listing4703.java */

import java.io.*;
import java.security.*;

public class Listing4703
{
/**
* Konvertiert ein Byte in einen Hex-String.
*/
public static String toHexString(byte b)
{
int value = (b & 0x7F) + (b < 0 ? 128 : 0);
String ret = (value < 16 ? "0" : "");
ret += Integer.toHexString(value).toUpperCase();
return ret;
}

public static void main(String[] args)
{
String our_string = "hallo_du";

try {
//MessageDigest erstellen
MessageDigest md = MessageDigest.getInstance("SHA");

md.update(our_string.getBytes(), 0, our_string.length());

//MessageDigest berechnen und ausgeben
byte[] result = md.digest();
for (int i = 0; i < result.length; ++i) {
System.out.print(toHexString(result[i]) + " ");
}
System.out.println();
} catch (Exception e) {
System.err.println(e.toString());
System.exit(1);
}
}
}


Das führt bei mir z.B. zu :

59 5F FD A7 5E EB A5 F8 3F 04 9C 82 23 CF 18 EC C5 E0 5C 4C

mfg
maceop

peschmae
18-03-2003, 13:59
für "ernsthafte" verschlüsselung gibts die Java Crypto API

http://java.sun.com/j2se/1.4.1/docs/api/javax/crypto/package-tree.html

die ist seit jdk 1.4 fix dabei (vorher nur Zusatz - Package)

Anwendung s.o., allerdings sind die natürlich nicht Open Source und da könnte auch sun was eingebaut haben...

MfG Peschmä