2011-02-08 31 views
13

Tôi đang làm việc trên một sản phẩm nền tảng nhỏ cho Windows và Mac được viết bằng C++/Obj-C. Tôi đã được yêu cầu thực hiện một mô-đun cấp phép cho cùng một. Nhiệm vụ này là một phần của một dự án rất tham vọng để giới thiệu cấp phép cho tất cả các sản phẩm của chúng tôi. Cuối cùng, chúng tôi sẽ có một chương trình cấp phép hoàn chỉnh, nơi chúng tôi có thể bán giấy phép cho khách hàng của chúng tôi hỗ trợ gia hạn hàng năm, cấp giấy phép, v.v. Vấn đề của tôi là tôi không biết điều đầu tiên về việc thực hiện kiểm tra giấy phép. Bất cứ ai có thể chỉ cho tôi một số cách thức để làm giống nhau không? Có bất kỳ mô-đun cấp phép nguồn mở nào xung quanh mà tôi có thể học không?Thực hiện thư viện kiểm tra cấp phép

Trả lời

16

Tôi sử dụng hệ thống Xác minh khóa một phần (PKV) và tôi đã triển khai thực hiện điều này trong C# bằng trình tạo PHP. Google sẽ đưa ra nhiều lần truy cập, giải thích và triển khai khác nhau; nhưng Brandon Staggs đã viết một cái nhìn tổng quan tốt (mặc dù trong Delphi!), ở đây:

http://www.brandonstaggs.com/2007/07/26/implementing-a-partial-serial-number-verification-system-in-delphi/

PKV hoạt động bằng cách mã hóa thông tin nhất định (loại giấy phép, sản phẩm số serial, ngày tháng, vv) trong khóa cùng với một băm tên người dùng và băm của thông tin được mã hóa. Phần lớn khóa thực sự bao gồm nhiều băm char. Ý tưởng là bạn chỉ kiểm tra một tập con của các băm này. Tập hợp con chính xác được phát hành có thể thay đổi theo thời gian để bảo mật và bảo vệ chống lại một số loại kỹ thuật đảo ngược nhất định.

Tôi cũng sẽ mã hóa khóa để giúp làm xáo trộn ý nghĩa của từng chữ cái trong giấy phép. Nếu không một người nào đó có nhiều khóa có thể xác định vị trí char nhất định có nghĩa là những thứ nhất định ("oh, ký tự 3-4 là số sê-ri"). Đây có thể là một chink trong bộ giáp của bạn!

Bất kỳ hệ thống giấy phép nào bạn phát triển sẽ không hoàn hảo. Nó sẽ có thể crack, và nếu sản phẩm của bạn phổ biến, sẽ bị nứt. Tuy nhiên, có một lập luận mạnh mẽ rằng hệ thống giấy phép tồn tại để giữ cho những người trung thực thành thật, và tạo ra đủ trở ngại cho những người không trung thực - nhưng không quá nhiều rào cản khiến nó trở nên quá bất tiện (ví dụ.). Những người làm hack hệ thống của bạn có lẽ sẽ không trả tiền cho nó.

+2

+1 cho đoạn cuối cùng, nó sẽ không bao giờ hoàn hảo, nhưng nếu nó đủ cứng thì sẽ ổn thôi. –

+0

Tôi thích lời giải thích của bạn và đặc biệt là đoạn cuối. Nó tóm tắt tất cả! –

Các vấn đề liên quan