|
|||||||
|
|
|
![]() |
|
|
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 15: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: 05:11.



















