Wie man die cpu-id in java?
Ich möchte erstellen Sie eine Verschlüsselung mit java.
Gibt es trotzdem, um die CPU-Id oder etwas, dass einzigartig im PC-BIOS oder ...
beispielsweise System.getCpuId();
es ist nur ein Beispiel ?
Vielen Dank ...
- muss es das gleiche Ergebnis für die gleichen Maschine? es klingt wie Sie bekommen konnte, Weg mit nur erzeugen Sie einen zufälligen Schlüssel und speichert diese?
- Nein, wissen Sie warum? weil ich will, bekomme cpuid und dann einen code erzeugen, und nach, dass Benutzer gesendet, es(generierter code) zu mir und ich senden Ihnen Aktivierungs-code ...
- Also das ist wirklich ein DRM-System?
- Wenn DRM ist die Abkürzung für Digital Rights Management ; JA 🙂
- Duplizieren: stackoverflow.com/questions/1986732/...
- Beachten Sie, dass, wenn Ihre software wird zum download über das Internet, Cracker wird, entfernen Sie einfach den Teil des Codes, der überprüft die Aktivierungs-Schlüssel gegen die cpu-id.
- Nicht ideal für Kopierschutz-Zwecke, es kann repliziert werden, auf einer anderen Maschine, nur durch kopieren von Dateien & registry-Einträge. Motherboard-IDs gefälscht werden kann auch, aber das dauert ein bisschen mehr Aufwand.
- Ah, noch eine weitere Lizenz-manager. Das kostet mehr Schweiß, Blut und Tränen, als Sie bekommen die Einnahmen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
wenn Sie brauchen, einzigartige id, die Sie verwenden können,UUID :
Beispiel ausführen :
Du willst also eine eindeutige Nummer (oder saite?) identifiziert den computer des Benutzers? Oder zumindest eindeutig genug, dass die chance auf eine doppelte, ist sehr gering, richtig?
Können Sie die Mac-Adresse der Netzwerk-Schnittstelle. Dies macht viele Annahmen, aber es kann gut sein, genug für Ihre Bedürfnisse:
Diese gibt Sie ein array von bytes. Sie können zu konvertieren, dass zu einer id mehrere Möglichkeiten... wie als hex-string.
Unterstützung erwarten, obwohl, wenn die Leute ersetzen, die bits von hardware in Ihrem computer.
Ich denke, dass solche OS-spezifischen Befehl ist nicht verfügbar in Java.
Dieser link zeigt einen Weg, es laufen auf windows.
Können Sie nicht (zuverlässig) erhalten Sie die hardware-Informationen in Java. Sie müssten JNA oder JNI. Können Sie klären, welche Art von Verschlüsselung du baust, und warum Sie benötigen, um die hardware info?
EDIT: Steve McLeod hat festgestellt, dass Java eine NetworkInterface.getHardwareAddress() Methode. Jedoch gibt es gravierende Einschränkungen, einschließlich der Tatsache, dass nicht alle Java-Implementierungen ermöglichen den Zugriff auf, und können die MAC-Adressen werden trivial geschmiedet.
Es gibt keinen Weg, um hardware-Informationen direkt mit Java ohne einige JNA/JNI-Bibliothek. Das heißt, Sie kann bekommen "etwas einzigartiges, system-spezifische Werte" mit
System.getEnv()
. Zum Beispiel,zurückkehren sollte Computernamen in einem Windows-system. Dies ist natürlich höchst unportabel. Und die Werte mit der Zeit ändern können, im gleichen system. Oder das gleiche in verschiedenen Systemen. Oh, gut...
Sollten Sie auch überlegen, eine Maschine kann mehr als eine CPU/NIC/was auch immer und damit mehr als ein IDs.
Was Sie wirklich suchen, ist eine gute Entropie-Quelle, aber ich würde eigentlich vorschlagen, Sie untersuchen die Java Cryptography Architecture, wie es bietet einen Rahmen dafür, so können Sie konzentrieren auf Ihre eigentliche Algorithmus.
http://java.sun.com/javase/6/docs/technotes/guides/security/crypto/CryptoSpec.html