Programmieren – die neusten Beiträge

MD5-Hash bei Java und C# geben nicht das selbe Ergebnis?

Hallo zusammen,

ich versuche in den letzten Tage mich mit der Entwickleroberfläche der FritzBox auseinander zu setzen. Leider scheitete ich am Session ID Login.

Der Login funktioniert über eine Challenge (String) den mir die FritzBox generiert und dem Passwort der FritzBox. Wenn ich den Login richtig verstanden habe geht er wie folgt:

Schritt 1: Challenge erhalten via fritz.box/login_sid.lua

Schritt 2: Alle Zeichen im Passwort der FritzBox, welche nicht in ISO-8859-1  
           anzeigbar sind (einen CodePoint von über 255 besitzen) mit einem "."  
           ersetzen

Schritt 3: Einen MD5-Hash im Format von 32 Hexzeichen mit Kleinbuchstaben 
           generieren aus dem String %Challenge%-%Passwort% (%Challenge% ist die
           aus dem Schritt 1, %Passwort% ist das Passwort der FritzBox aus dem 
           Schritt 2)

Schritt 4: Das Ergebnis zum Anmelden nutzen: 
           http://fritz.box/login_sid.lua?response=%Challenge%-%Ergebnis% 
           (%Ergebnis% ist der 
           MD5-Hash aus Schritt 3)

So: Was ist nun mein Problem?

Ich möchte diesen MD5-Hash generieren. Ich habe mir bereits Tutorials angeschaut, wie die von baeldung.com und auch einen String als Ergebnis bekommen. Das Problem ist aber, dass der Hash falsch ist.

Also habe ich mir den Beispiel C#-Code auf der FritzBox Webseite angeschaut und ausprobiert. Das Ergebnis ist ein ganz anderer Hash. Wie kommt das zu Stande?

Damit man mich besser versteht, habe ich hier meinen Java Code und den Code aus C#.

Input bei allen:

51cbb71a-Test

Java (Möglichkeit 1): https://pastebin.com/vpzA8mr9 (um Platz zu sparen als Link)

Output:

DigestTest: 3e2a82112b721922d21a2e62e12f02212b02142c12692a82

Java (Möglichkeit 2):

StringBuilder builder = new StringBuilder();
for (byte b : DigestUtils.md5(input)) {
    builder.append(byteToHex(b));
}
System.out.println("BuilderDigest: " + builder.toString());

Output:

BuilderDigest: 3ea811b7192d1ae6e1f021b014c169a8

Java (Möglichkeit 3):

String md5Hex = DigestUtils.md5Hex(input); //API: commons-codec-1.15.jar
System.out.println("Hash: " + md5Hex);

Output:

Hash: 3ea811b7192d1ae6e1f021b014c169a8

C#

static void Main(string[] args) {
  try {
    MD5 md5Hasher = MD5.Create();
    byte[] encoded = Encoding.Unicode.GetBytes("51cbb71a-Test");
    byte[] data = md5Hasher.ComputeHash(encoded);
    StringBuilder builder = new StringBuilder();
    for (int i = 0; i < data.Length; i++) {
      builder.Append(data[i].ToString("x2"));
    }
    Console.WriteLine(builder.ToString());
  } catch(IndexOutOfRangeException exception) {
    Console.WriteLine("null");
  }
}

Output:

0e9af10abdb7cd7119a85967272e3bc3

Wieso kommt da was anderes raus und wie kann ich das nun auch in Java umsetzen? (Der C#-Code gibt die richtige Lösung!)

Danke schon einmal im Voraus!

Links die Helfen können:

  • https://avm.de/fileadmin/user_upload/Global/Service/Schnittstellen/Session-ID_deutsch_13Nov18.pdf
  • https://www.baeldung.com/java-md5 (etwas alt)
  • https://www.youtube.com/watch?v=hW2s03abGaI
  • https://codedocu.de/...
Computer, programmieren, Java, C Sharp, Encoding, Informatik, Verschlüsselung

Stimmerkennung in C#?

Hallo liebe Community!

Ich habe einen C# Quellcode heruntergeladen. Das fertige Programm sollte ein Speech to Text tool werden. Jedoch zeigt mir Visual Studio zwei Fehler an, welche mich vom compilieren hindern.

Die Fehler lauten:

Severity Code Description Project File Line Suppression State
Error CS8652 The feature 'top-level statements' is currently in Preview and *unsupported*. To use Preview features, use the 'preview' language version. atletik C:\Users\herrb\Documents\aletik_c#\atletik\atletik\Program.cs 5 Active
Severity Code Description Project File Line Suppression State
Error CS0106 The modifier 'private' is not valid for this item atletik C:\Users\herrb\Documents\aletik_c#\atletik\atletik\Program.cs 11 Active

Hier mal der Quellcode:

using System.Speech;
using System.Speech.Recognition;
using System;


SpeechRecognitionEngine recognizer = null;
recognizer = new SpeechRecognitionEngine();
recognizer.SetInputToDefaultAudioDevice();
recognizer.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(recognizer_SpeechRecognized);
recognizer.RecognizeAsync(RecognizeMode.Multiple);


private void recognizer_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
{
    string text = e.Result.Text;
    Console.WriteLine(text);
}

Hätte jemand vielleicht eine Idee, ich kenne mich noch nicht in C# aus, deshalb frage ich. Eigentlich wollte ich nur dieses Tool und nicht mehr... also nicht mit C# arbeiten usw.

programmieren, C Sharp

Selbstständiger Programmierer werden, Lernzeit?

Hallo, ich möchte Selbstständiger Programmierer werden, da es die einzige tätigkeit ist, die mich wirklich erfüllt.

Ich habe bereits 2 Jahre erfahrung mit Java gesammelt, und nun möchte ich in einem Jahr soviel wissen ansammeln wie es nur möglich ist.

Meine Eltern haben mir einen Zeit puffer von einem Jahr gegeben, wo ich mich um die Selbstständigkeit kümmern soll.

Ich möchte in diesem Jahr so Gaß geben wie kein anderer. Mein Plan ist es Java,Unity, HTML,PHP,JavaScript und CSS zu "meistern".

Ich lerne schon seit 2 Wochen und komme langsam vorran.

Mein Plan bestand daraus:

6 Uhr aufstehen kurz duschen, dann lernen bis 13 Uhr.

13 Uhr kurz zum Sport um meinen Körper genau so fitt zu halten wie mein Geist.

14 Uhr nachhause wieder Duschen dann 1-2 Stunden Zocken/YT dann bis 19 Uhr weiter lernen. Dannach schaue ich weiter YouTube oder ich Zocke irgendwas.

So jetzt zur meiner Frage, wie viel kann ich mehr Lernen? Ich hatte vor das Zocken komplett aus meinem Leben zu schreichen, meine Sozialen kontakte alle Abzubrechen, um mich kontinuierlich auf das Lernen zu Konzentrieren.

Das heißt: schlafen, lernen, sport, lernen - return;

Komme ich damit schneller vorran? Ich möchte mein Ziel erreichen koste es was es wolle. Ich möchte aber auch kein BurnOut, damit ich immer weiter machen kann.

Wie soll ich mir meine Zeit einteilen, ich möchte mein Ziel erreichen, aber länger als ein Jahr hab ich nicht. Ich weiß das man als Selbstständiger Programmierer Geld verdienen kann, ich weiß auch wie ich das anstellen muss um damit Geld zu verdienen. Nur fehlt mir das nötige wissen in diesen Programmier sprachen.

Was sagt ihr dazu, sollte ich einfach so weiter machen oder mich mehr auf das Lernen konzentrieren.

Lern Tipps von erfahrenen Developer'n nehme ich mir jetzt auch bei denn Antworten zu herzen. alles andere natürlich auch!

Unnötiges Hintergrundwissen, wenn' es jemanden juckt - sonst einfach Skippen und Antworten:

Ich war bereits bei 8 - 9 Arbeitgeber, diese waren auch immer "nett". Nur fehlte mir immer was, oder mich störte etwas. Ich hab einfach gemerkt das, dass Arbeiten in der selben Täglichen Routine nichts für mich ist. Ich möchte mehr aus meinem Leben machen, kein Zahnrad sein, sondern die Ganze Uhr.

Nachdem ich meine letze Arbeit gekündigt hatte, da ich es nicht aushalte unter Affen zu Arbeiten, habe ich mich dazu Entschieden alles mögliche über Marketing zu lernen. Da kamm ich auf den Entschluss-

unten geht es weiter: (zeichenlimit erreicht)

Selbständigkeit, HTML, programmieren, CSS, Java, JavaScript, PHP, selbständig machen

Meistgelesene Beiträge zum Thema Programmieren