Si vous voyez le constructeur par défaut de java.rmi.dgc.VMID
public VMID()
{
addr = localAddr;
uid = new UID();
}
alors vous trouverez que cela dépend du hash
de la propriété intellectuelle adresse (qui sera la même pour toute la machine utilisant le localhost
ou 127.0.0.1
). Mais (et c'est un big mais), cela dépend aussi du java.rmi.server.UID
.
Maintenant, comme par javadoc:
Une instance UID indépendamment généré est unique au fil du temps avec rapport à l'hôte, il est généré aussi longtemps que l'hôte nécessite plus d'un millième de seconde pour redémarrer et son système l'horloge n'est jamais réglée en arrière.
Maintenant, il n'y a pas de machine disponible qui redémarre en moins d'une milliseconde. Le plus rapide que j'ai vu sont MS-DOS (pas sûr de l'heure de démarrage) et Google OS (prend 3-4 secondes, selon leur promo). Donc, je me sentirai en sécurité si c'est le seul facteur mais je vais quand même tester le facteur setting the system clock backward
.
Si je dois utiliser votre produit sur plusieurs machines, mais en ne payant que pour celui alors je l'installer sur un système d'exploitation en cours d'exécution sur VMPlayer ou VirtualBox. De cette façon, je pourrais distribuer plusieurs copies de votre outil. Avez-vous vérifié ce scénario.
En outre, sur ma machine de développement j'ai normalement deux JDK differnt (un dernier pour jouer autour et un deuxième pour le développement spécifique de client). Les classes VMID et UID sont connues pour avoir quelques problèmes avec plusieurs JVM. Vérifiez ceci: http://www.velocityreviews.com/forums/t131825-can-we-generate-unique-id-from-java.html.
En outre, un coup d'oeil à ce javadoc: http://fuseyism.com/classpath/doc/java/rmi/dgc/VMID.html
Normalement, les stratégies de licence que j'ai vu sont beaucoup plus impliqués. Comme (sur Windows machine) créer/utiliser des valeurs de clé de registre, sauvegardées par un service web pour une inscription unique, demander à l'utilisateur une valeur salée (comme son nom, son âge) et ensuite générer une clé de licence.Donc, enfin, si vous êtes sûr que vos utilisateurs n'utiliseront pas de technologie de virtualisation (comme vmplayer, etc.), il n'y a pas de problèmes multiples liés à la JVM et ils pourraient ne pas avoir d'Internet disponible pour l'activation. . Mais gardez à l'esprit que pour un attaquant déterminé, aucun logiciel n'est trop difficile à casser, comme en témoigne le nombre de jeux et de logiciels piratés/piratés disponibles sur le marché.
Comment calculez-vous le VMID? utilisez-vous 'java.rmi.dgc.VMID'? – Favonius
ouais, j'utilise la même fonction. Est-ce correct ? – Naveen