文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>软件授权的一个简易实现方案

软件授权的一个简易实现方案

时间:2011-04-02  来源:startfrom.it

辛辛苦苦开发出来的软件,都希望能够有所保护,除去用软件狗外,授权码是一个比较有效而又比较容易实现的保护机制。以下提供一个简易的实现方案。

第一步:我们要实现一个与程序系统所在机器绑定的唯一机制。在.net环境下,获取mac地址是一个比较靠谱的办法,相对而言获取cpu id或硬盘id都不能保证获得唯一的ID。(当然用户要篡改mac,就没辙了)。然后通过获得的mac地址,进行简单算法换算,获得一个LicenseClientKey。

第二步:我们设计一个算法,根据LicenseClientKey,计算得到一个LicenseKey并将它发布给最终用户。

第三步:最终用户获得LicenseKey后,将LicenseKey安装到系统中。

最后,就是系统程序检测LicenseKey是否正确。通过前面第一步、第二步的方法获得LicenseClientKey,并计算得出LicenseKey,然后比较是否与系统安装的LicenseKey匹配。

代码的实现很简单,这里就只给出获取mac地址及算法换算,并计算LicenseClientKey的代码片段。


需要引用以下几个namespace

Imports System.Net

Imports System.Net.NetworkInformation

Imports System.Security.Cryptography

获取LicenseClientKey

        Dim strClientKeyCode As String = ""
Try
For Each nic As NetworkInterface In NetworkInterface.GetAllNetworkInterfaces()
If nic.OperationalStatus = OperationalStatus.Up Then
If strClientKeyCode = "" Then
strClientKeyCode
= nic.GetPhysicalAddress().ToString()
End If
End If
Next
Catch ex As Exception
strClientKeyCode
= ""
End Try

If strClientKeyCode = "" Then
Response.Write(
"Can't get LicenseClientKey")
Else
Dim encoder As New UTF8Encoding
Dim hashedBytes As Byte()
Dim hasher As New SHA256Managed
Dim sBuilder As New StringBuilder
hashedBytes
= hasher.ComputeHash(encoder.GetBytes("YourKey" + strClientKeyCode))
For i As Integer = 0 To hashedBytes.Length - 1
sBuilder.Append(hashedBytes(i).ToString(
"x2"))
Next i
Response.Write(sBuilder.ToString)
End If
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载