Hôm nay mình sẽ hướng dẫn mọi người lại về điều trên và tạo ra một chương trình có bản quyền tốt nhất để tránh những anh chị em phá phách bé khóa chương trình.
Việc tạo bản quyền (license key) cho một chương trình viết bằng
Visual Basic (VB.NET) thường bao gồm các bước như:- Tạo khóa bản quyền (License Key).
- Lưu và xác minh khóa bản quyền khi chạy chương trình.
- Bảo vệ mã nguồn tránh bị bẻ khóa dễ dàng.
Dưới đây là một ví dụ cơ bản bằng
Visual Basic để tạo và kiểm tra license key dựa trên Serial Number của máy + mã hóa:🔐 1. Tạo Mã License (dành cho nhà phát hành)
Imports System.Security.Cryptography
Imports System.Text
Module LicenseGenerator
Function GenerateLicenseKey(machineId As String, secretKey As String) As String
Dim encoding As New UTF8Encoding()
Dim hmac As New HMACSHA256(encoding.GetBytes(secretKey))
Dim hashBytes As Byte() = hmac.ComputeHash(encoding.GetBytes(machineId))
Return Convert.ToBase64String(hashBytes).Substring(0, 20).ToUpper()
End Function
Sub Main()
Dim machineId As String = "ABC1234567" ' Thay bằng ID thật của máy người dùng
Dim secretKey As String = "MY_SECRET_KEY"
Dim licenseKey As String = GenerateLicenseKey(machineId, secretKey)
Console.WriteLine("License Key: " & licenseKey)
End Sub
End Module
💻 2. Kiểm Tra License Khi Người Dùng Chạy Ứng Dụng
Imports System.Security.Cryptography
Imports System.Text
Public Class LicenseChecker
Private secretKey As String = "MY_SECRET_KEY"
Public Function VerifyLicense(machineId As String, userKey As String) As Boolean
Dim expectedKey As String = GenerateLicenseKey(machineId, secretKey)
Return String.Equals(expectedKey, userKey, StringComparison.OrdinalIgnoreCase)
End Function
Private Function GenerateLicenseKey(machineId As String, secret As String) As String
Dim encoding As New UTF8Encoding()
Dim hmac As New HMACSHA256(encoding.GetBytes(secret))
Dim hashBytes As Byte() = hmac.ComputeHash(encoding.GetBytes(machineId))
Return Convert.ToBase64String(hashBytes).Substring(0, 20).ToUpper()
End Function
End Class
🖥️ 3. Lấy Machine ID (VD: từ ổ đĩa C)
Imports System.Management
Public Function GetMachineId() As String
Dim searcher As New ManagementObjectSearcher("SELECT * FROM Win32_LogicalDisk WHERE DeviceID = 'C:'")
For Each disk As ManagementObject In searcher.Get()
Return disk("VolumeSerialNumber").ToString()
Next
Return "UNKNOWN"
End Function
✅ 4. Cách Dùng Trong Form
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim machineId As String = GetMachineId()
Dim userLicenseKey As String = My.Settings.LicenseKey ' Hoặc nhập từ người dùng
Dim checker As New LicenseChecker()
If checker.VerifyLicense(machineId, userLicenseKey) Then
MessageBox.Show("Đã kích hoạt bản quyền!")
Else
MessageBox.Show("Sai mã bản quyền. Vui lòng liên hệ hỗ trợ.")
Application.Exit()
End If
End Sub
🔒 Lưu ý Bảo Mật
-
Nên mã hóa chuỗi key hoặc dùng
RSA/DSAđể tăng độ bảo mật. -
Kết hợp thêm yếu tố thời gian (hạn dùng) nếu bạn muốn tạo
licensetheo thời hạn. -
Không
hard-code SecretKeytrong mã nếu phân phối rộng rãi — nên mã hóa hoặcobfuscate.
Nếu bạn cần hỗ trợ tạo trình tạo key tự động, hệ thống license online, hoặc thêm tính năng như hết hạn, theo dõi key, hãy cho biết — mình có thể giúp bạn mở rộng hệ thống.
<

Hướng dẫn bình luận
Mọi người để lại bình luận góp ý, nhận xét về những bài viết mà mình chia sẽ văn minh lịch sự hay kích động, Không spam, không chèn link quảng cáo, bán hàng, Không sử dụng từ ngữ thô tục, xúc phạm, kích động, Link chỉ được phép khi thực sự liên quan đến nội dung bài viết, Không mạo danh người khác hoặc sử dụng email giả, Bình luận vi phạm sẽ bị xóa không cần thông báo trước.Mọi người lưu ý răng, nếu muốn chia sẽ code ở bình luần thì cần mã hóa code trước khi bỏ vào khung nhé. :)
⑴ Chèn ℂ𝕤𝕤 theo mẫu :
[pre css] CSS [/pre]⑵ Chèn ℍ𝕥𝕞𝕝 theo mẫu :
[pre html] HTML [/pre]⑶ Chèn 𝕁𝕒𝕧𝕒𝕤𝕔𝕣𝕚𝕡𝕥 theo mẫu :
[pre js] Javascript [/pre]🖼️ Chèn 𝕀𝕞𝕒𝕘𝕖 theo mẫu :
[img] Link hình ảnh [/img]🎞️ Chèn Video 𝕐𝕠𝕦𝕥𝕦𝕓𝕖 theo mẫu :
[youtube] Link Youtube [/youtube]0 Nhận xét