___ answer3413905 ___

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.

    
___ qstntxt ___

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ück

Prost, Entschuldigung, wenn das ein bisschen seltsam ist

    
___ answer3413895 ___

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?

Ссылка

    
___ answer3413903 ___

Es gibt einen Wikipedia-Artikel über Code-Verschleierung . Vielleicht können dir die Tricks dort helfen =)

    
___ answer3414250 ___

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.

    
___ answer3414158 ___

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.

    
___ tag123obfuscation ___ Obfuscation ist der Prozess, bei dem der Code geändert wird, sodass es für einen Entwickler schwieriger ist, klar zu verstehen, was das beabsichtigte Programm tut oder wie es funktioniert. Je größer das Programm ist, desto größer ist die Verschleierung, da der Code ineinander übergeht und verschiedene Segmente durch das Programm verbindet. ___ tag123java ___ Java (nicht zu verwechseln mit JavaScript oder JScript oder JS) ist eine universelle objektorientierte Programmiersprache, die für die Verwendung in Verbindung mit der Java Virtual Machine (JVM) entwickelt wurde. "Java-Plattform" ist der Name für ein Computersystem, auf dem Tools zum Entwickeln und Ausführen von Java-Programmen installiert sind. Verwenden Sie dieses Tag für Fragen, die sich auf die Java-Programmiersprache oder Java-Plattform-Tools beziehen. ___ answer3414235 ___

Der normale Weg wäre ein Hash zu verwenden.

  1. Erstellen Sie einen Hash Ihres Seriencodes.
  2. Um die Client-Seriennummer zu validieren, verwenden Sie die gleiche Funktion.
  3. Wenn die Hashes übereinstimmen, war die Seriennummer korrekt, obwohl die Seriennummer selbst nicht im Code enthalten war.

Per Definition ist es fast unmöglich, aus dem Hash den ursprünglichen Code abzuleiten.

    
___ answer3413873 ___

Es ist nie hilfreich, den Code komplex aussehen zu lassen, damit er nicht gehackt wird!

    
___

8

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ück

Prost, Entschuldigung, wenn das ein bisschen seltsam ist

    
Candyfloss 05.08.2010, 10:35
quelle

7 Antworten

19

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.

    
Marcus Johansson 05.08.2010, 10:42
quelle
7

Der normale Weg wäre ein Hash zu verwenden.

  1. Erstellen Sie einen Hash Ihres Seriencodes.
  2. Um die Client-Seriennummer zu validieren, verwenden Sie die gleiche Funktion.
  3. Wenn die Hashes übereinstimmen, war die Seriennummer korrekt, obwohl die Seriennummer selbst nicht im Code enthalten war.

Per Definition ist es fast unmöglich, aus dem Hash den ursprünglichen Code abzuleiten.

    
Joeri Hendrickx 05.08.2010 11:30
quelle
6

Es ist nie hilfreich, den Code komplex aussehen zu lassen, damit er nicht gehackt wird!

    
Gopi 05.08.2010 10:39
quelle
1

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.

    
helios 05.08.2010 11:33
quelle
0

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?

Ссылка

    
Aidanc 05.08.2010 10:40
quelle
0

Es gibt einen Wikipedia-Artikel über Code-Verschleierung . Vielleicht können dir die Tricks dort helfen =)

    
Jens 05.08.2010 10:41
quelle
0

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.

    
Vishal 05.08.2010 11:20
quelle

Tags und Links