Sicherheit durch Dunkelheit ist immer eine schlechte Idee. Sie müssen es nicht vermeiden, aber Sie sollten nicht nur darauf vertrauen.
Entweder verschlüsseln Sie Ihre Serien mit einem Schlüssel, den Sie beim Start des Dienstes eingeben, oder geben Sie die Serien nur als hex oder base64 an, nicht als ASCII.
Ich schreibe eine Möglichkeit zu überprüfen, ob eine Kunden-Seriennummer mit meiner fest codierten Nummer übereinstimmt. Gibt es eine Möglichkeit, dies so schwer lesbar wie möglich zu machen, falls ein unerwünschter Code in die Hände des Benutzers gelangt?
Ich arbeite in Java.
Zum Beispiel (Pseudocode)
if (x! = y) springt aus dem Code und gibt den Fehler
zurückProst, Entschuldigung, wenn das ein bisschen seltsam ist
Verändern Sie die Kontrollstruktur des freigegebenen Codes?
Geben Sie beispielsweise die Zahlen an einem zufälligen Punkt im Code unter einer anderen Variablen ein, und stellen Sie sie an einem beliebigen Punkt gleich x und y ein?
Es gibt einen Wikipedia-Artikel über Code-Verschleierung . Vielleicht können dir die Tricks dort helfen =)
Sie können SHA1 oder eine andere Einwegverschlüsselung versuchen (MD5 ist nicht so sicher, aber es ist ziemlich gut). Tu das nicht:
%Vor%Mach das:
%Vor%So kann der Code-Leser nur einen verschlüsselten (und sehr, sehr schwer zu entschlüsseln) Wert sehen.
Anstatt zu versuchen, den Code komplex zu gestalten, können Sie andere Methoden implementieren, die Ihre fest codierte Seriennummer nicht offen legen.
Versuchen Sie, die fest codierte Nummer an einem festen Ort als verschlüsseltes Byte-Array zu speichern. So ist es nicht lesbar. Vergleichen Sie zum Vergleich den Client-Seriencode mit demselben Algorithmus und vergleichen Sie ihn.
Der normale Weg wäre ein Hash zu verwenden.
Per Definition ist es fast unmöglich, aus dem Hash den ursprünglichen Code abzuleiten.
Es ist nie hilfreich, den Code komplex aussehen zu lassen, damit er nicht gehackt wird!