|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Jan 2010
Messaggi: 149
|
[C#] creare una licenza
Salve, come da titolo vorrei creare una licenza per un programma
fatto in C# che dopo un tot di mesi scade ma non ho idea di come cominciare ![]() |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Aug 2001
Messaggi: 1049
|
sei troppo generico, come è costruita l'applicazione? ha una base dati da qualche parte? accede a qualche servizio tramite internet? e distribuita e viene utilizzata su una sola macchina?
se mi dai qualche info di più magari posso indicarti una strada |
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Jan 2010
Messaggi: 149
|
no non ha nessuna base di dati da nessuna parte,
in poche parole è un sofware che fa un download di alcuni programmi, solo che vorrei che questi programmi che scarica dovranno avere un limite di tempo e poi non dovrebbero più essere utilizzati. |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Aug 2001
Messaggi: 1049
|
beh puoi usare una chiave calcolata sulla macchina allora, puoi inventarti un algoritmo tuo o appoggiarti a qualcosa di già esistente.
Dovessi farlo io per una cosa così piccola prenderei il DateTime.Now e lo convertirei in stringa ci schianterei un carattere speciale subito dopo tipo % e ci attaccherei anche l'id del processore: Codice:
string cpuInfo = string.Empty; ManagementClass mc = new ManagementClass("win32_processor"); ManagementObjectCollection moc = mc.GetInstances();foreach (ManagementObject mo in moc) { if (cpuInfo == "") { //Get only the first CPU's ID cpuInfo = mo.Properties["processorID"].Value.ToString(); break; } } return cpuInfo; Codice:
public static string EncryptString(string Message, string Passphrase) { byte[] Results; System.Text.UTF8Encoding UTF8 = new System.Text.UTF8Encoding(); MD5CryptoServiceProvider HashProvider = new MD5CryptoServiceProvider(); byte[] TDESKey = HashProvider.ComputeHash(UTF8.GetBytes(Passphrase)); TripleDESCryptoServiceProvider TDESAlgorithm = new TripleDESCryptoServiceProvider(); TDESAlgorithm.Key = TDESKey; TDESAlgorithm.Mode = CipherMode.ECB; TDESAlgorithm.Padding = PaddingMode.PKCS7; byte[] DataToEncrypt = UTF8.GetBytes(Message); try { ICryptoTransform Encryptor = TDESAlgorithm.CreateEncryptor(); Results = Encryptor.TransformFinalBlock(DataToEncrypt, 0, DataToEncrypt.Length); } finally { TDESAlgorithm.Clear(); HashProvider.Clear(); } return Convert.ToBase64String(Results); } Codice:
public static string DecryptString(string Message, string Passphrase) { byte[] Results; System.Text.UTF8Encoding UTF8 = new System.Text.UTF8Encoding(); MD5CryptoServiceProvider HashProvider = new MD5CryptoServiceProvider(); byte[] TDESKey = HashProvider.ComputeHash(UTF8.GetBytes(Passphrase)); TripleDESCryptoServiceProvider TDESAlgorithm = new TripleDESCryptoServiceProvider(); TDESAlgorithm.Key = TDESKey; TDESAlgorithm.Mode = CipherMode.ECB; TDESAlgorithm.Padding = PaddingMode.PKCS7; byte[] DataToDecrypt = Convert.FromBase64String(Message); try { ICryptoTransform Decryptor = TDESAlgorithm.CreateDecryptor(); Results = Decryptor.TransformFinalBlock(DataToDecrypt, 0, DataToDecrypt.Length); } finally { TDESAlgorithm.Clear(); HashProvider.Clear(); } return UTF8.GetString( Results ); } Spero di averti dato una idea. Ovviamente è un sistema un pò deboluccio ma mi pare che tu non abbia grosse esigenze. |
![]() |
![]() |
![]() |
#5 |
Member
Iscritto dal: Jan 2010
Messaggi: 149
|
Vorrei fare una cosa del genere in C#:
Codice:
Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim key As String = "x9xxVAQXINExx6x" 'Specifia la licenza Key Dim licence As RegistryKey = Registry.CurrentUser.CreateSubKey("software\vaqxine", RegistryKeyPermissionCheck.Default) If licence.GetValue("licence") Is Nothing Then Dim input As String = InputBox("Inserisci la tua licenza", "Per favore registra il suo programma!") If input <> key Then MsgBox("per favore premi OK per convalidare la Licenza Key!", MsgBoxStyle.Exclamation, "Key invalida!") End Else licence.SetValue("licence", key) MsgBox("Clicca Ok per continuare", MsgBoxStyle.Information, "Accettata la licenza!") End If ElseIf licence.GetValue("licence") <> key Then Dim input As String = InputBox("Enter your registration key", "La vostra licenza è valida") If input <> key Then MsgBox("per favore premi OK per convalidare la Licenza Key!", MsgBoxStyle.Exclamation, "Key invalida!") End Else licence.SetValue("licence", key) MsgBox("Clicca Ok per continuare", MsgBoxStyle.Information, "Registrazione key accettata") End If End If licence.Close() End Sub End Class Qualcuno sa darmi una mano? ![]() Ultima modifica di kulosia : 14-09-2010 alle 14:28. |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Aug 2001
Messaggi: 1049
|
ma hai letto quello che ho scritto???
nel mio esempio hai modo di valutare in qualsiasi momento in che data è stato registrato il software. e quindi hai modo di bloccarlo se sono passati tot giorni/mesi/anni |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 04:49.