Hallo,
ich versuche mich gerade noch ein wenig mein Wissen zur Kryptographie und die Umsetzung in java zu vertiefen.
Also mal angenommen wir haben einen String.
Wenn ich nun diesen String einwegverschlüsseln will kann ich verschiedene Algorithmen verwenden wie z.B. den SHA-256. Dieser erzeugt nun mathematisch eine Zahl mit 256 bits.
Ist es legitim dass man solche bits als Zahlen interpretiert? Also z.B. 001110 einfach als 1110 zu interpretieren? Nunja erstmal weiter.
Im nächsten Schritt (in java über message digest umgesetzt) zerschnibble ich dann diese 256 bits in jeweils 8er Stückchen(bytes) und kann dann diese bytes die echte Zahlen darstellen in Zeichenketten umwandeln(Integer.toHexString).Diese haben die Form fffff123.
Final hängt man die Strings dann zusammen und "entfernt" die "f"s.Der Endwert ist der "HashWert".
So mich interessiert nun ob ich das ganze richtig verstanden habe und vorallem verstehe ich eine Sache noch nicht. Ich habe einen Algorithmus gefunden der mit Hashfunktionen arbeitet.
Hier mal die Formel die mich interessiert:
gi(x) = (h1(x) + ih2(x)) mod l
h1 und h2 sind hashfunktionen. Nun verstehe ich nicht, was hier eigentlich addiert werden soll. Etwa die bits? Also z.B. 100101010010101010111 + 10101010110101010111. Hierzu muss ich dann aber auch sagen, dass ich noch keine Möglichkeit gefunden habe wie man sich den bit-String der SHA-Verschlüsselung ausgeben lässt.
Grundsätzlich mache ich einwegverschlüsselungen eben auf die folgende Art:
Nunja, wie gesagt, besonders interressieren tut mich hier natürlich wie ich die Ergebnisse der zwei hashwerte addieren kann bzw. hierzu eine Modulo Rechnung durchführe. Das ganze verwirrt mich etwas.
ich versuche mich gerade noch ein wenig mein Wissen zur Kryptographie und die Umsetzung in java zu vertiefen.
Also mal angenommen wir haben einen String.
Wenn ich nun diesen String einwegverschlüsseln will kann ich verschiedene Algorithmen verwenden wie z.B. den SHA-256. Dieser erzeugt nun mathematisch eine Zahl mit 256 bits.
Ist es legitim dass man solche bits als Zahlen interpretiert? Also z.B. 001110 einfach als 1110 zu interpretieren? Nunja erstmal weiter.
Im nächsten Schritt (in java über message digest umgesetzt) zerschnibble ich dann diese 256 bits in jeweils 8er Stückchen(bytes) und kann dann diese bytes die echte Zahlen darstellen in Zeichenketten umwandeln(Integer.toHexString).Diese haben die Form fffff123.
Final hängt man die Strings dann zusammen und "entfernt" die "f"s.Der Endwert ist der "HashWert".
So mich interessiert nun ob ich das ganze richtig verstanden habe und vorallem verstehe ich eine Sache noch nicht. Ich habe einen Algorithmus gefunden der mit Hashfunktionen arbeitet.
Hier mal die Formel die mich interessiert:
gi(x) = (h1(x) + ih2(x)) mod l
h1 und h2 sind hashfunktionen. Nun verstehe ich nicht, was hier eigentlich addiert werden soll. Etwa die bits? Also z.B. 100101010010101010111 + 10101010110101010111. Hierzu muss ich dann aber auch sagen, dass ich noch keine Möglichkeit gefunden habe wie man sich den bit-String der SHA-Verschlüsselung ausgeben lässt.
Grundsätzlich mache ich einwegverschlüsselungen eben auf die folgende Art:
Java:
MessageDigest md;
String string1 ="Hallo";
md= MessageDigest.getInstance("SHA-256");
md.update(string1.getBytes());
byte[] mb = md.digest();
String output = "";
for (int i = 0; i < mb.length; i++) {
byte temp = mb[i];
System.out.println(temp);
String s = Integer.toHexString(new Byte(temp));
System.out.println(s);
while (s.length() < 2) {
s = "0" + s;
}
s = s.substring(s.length() - 2);
output += s;
}
//System.out.println(out.length());
System.out.println("Hashwert von "+ string1+ ": " + output);
// gi(x) = (h1(x) + ih2(x)) mod bloomFilterSize
Nunja, wie gesagt, besonders interressieren tut mich hier natürlich wie ich die Ergebnisse der zwei hashwerte addieren kann bzw. hierzu eine Modulo Rechnung durchführe. Das ganze verwirrt mich etwas.