La "technologie de licence" est essentiellement la méthode dont il traite plus en détail dans le reste du paragraphe. Une «licence» n'est rien de plus qu'une preuve d'autorisation pour un acteur (soit l'utilisateur lui-même, soit un autre code exécuté en son nom) pour utiliser votre code. Il ne doit pas être une norme universelle comme un certificat SSL. Il a juste besoin d'être connu de vous, et difficile à imiter par les autres. En ce qui concerne les ressources, c'est juste quelque chose d'inhérent à .Net. Dans VS Solution Explorer, allez dans le projet auquel vous voulez accéder depuis votre DLL restreinte. Le premier élément de son contenu développé sera un dossier Propriétés; En dessous, vous devriez trouver un élément Resources.resx. Ouvrez-le et vous obtiendrez une interface graphique qui vous permettra de référencer des chaînes, des images, des fichiers texte, etc. qui peuvent être compilés ou conservés à côté de la DLL lors de la construction de la solution. C'est ici que vous devez spécifier une chaîne chiffrée et connue. La chaîne la plus sécurisée à chiffrer serait probablement le nom fort ou le GUID de l'assembly, car vous pourriez alors comparer ce que vous décryptez avec les informations d'assemblage de l'appelant, empêchant quelqu'un d'extraire la chaîne chiffrée d'une de vos bibliothèques et de l'utiliser dans le leur. Dans votre DLL restreinte, vous pouvez utiliser la même fonctionnalité pour stocker la clé de déchiffrement que vous utiliserez pour décoder la chaîne fournie par les DLL appelantes.
De nombreuses ressources sont disponibles pour les didacticiels sur l'utilisation du cryptage RSA (la méthode de cryptage déduite ici) dans .NET. Il y a un RsaCryptoServiceProvider qui va effectuer le cryptage/décryptage, générer des clés, etc; Tout ce que vous avez à faire est de le déposer. Quelque chose qui peut être déroutant est que dans les algorithmes à clé asymétrique comme RSA, les données sont généralement cryptées en utilisant la clé publique et décryptées en utilisant la clé "privée". En effet, les clés asymétriques sont généralement utilisées sur les canaux de communication publics et vous devez donner à la partie distante une clé pour écrire des messages que vous décoderez ensuite. Cependant, dans ce cas, votre DLL restreinte doit déchiffrer les données dont elle a besoin pour la comparaison, et nécessite donc une "clé privée" fixe. Cela rend la clé de décryptage "publique" à quiconque avec .NET Reflector ou un désassembleur similaire. Toutefois, si vous, le développeur, êtes le seul à pouvoir fournir des chaînes cryptées aux DLL autorisées à accéder à votre DLL, vous pouvez garder la clé de cryptage secrète.
Pour quelqu'un d'autre qui est confus, il cite [cette réponse précédente à sa question] (http://stackoverflow.com/questions/4762259/class-library-and-security-in-dotnet-technology/4762319# 4762319)[email protected] - votre question serait plus claire si vous éditez votre question en sélectionnant le deuxième paragraphe et en cliquant sur le bouton "** ** blockquote. – Justin