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
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:
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ó.
- 1. Thư viện được cấp phép LGPL
- 2. Thực hiện `kiểm tra` hoặc 'thực hiện kiểm tra'
- 3. C++ Đơn vị kiểm tra thư viện
- 4. Thực hiện Kiểm tra mã Resharper trừ thư mục
- 5. C: Bộ kiểm tra thư viện chủ đề POSIX
- 6. phương thức thực hiện từ thư viện lớp được tham chiếu trước khi xây dựng ứng dụng .NET để kiểm tra giấy phép
- 7. Thực hiện kiểm tra đôi trong OCaml
- 8. Trình kiểm tra thư viện tĩnh cho các cửa sổ?
- 9. Thiết kế kiểm tra so sánh hiệu suất thư viện
- 10. Kiểm tra đơn vị với một thư viện tĩnh
- 11. Kiểm tra tập tin/thư mục cho phép truy cập
- 12. Thư viện phép nhân hàng chục
- 13. JavaScript RegExp: kiểm tra và thực hiện
- 14. Tìm thư viện thực hiện nén/giải nén LZW
- 15. Tìm kiếm thư viện kiểm tra chính tả Java
- 16. Android: Thư viện các bài kiểm tra trên web
- 17. Kiểm tra hiệu suất tự động của thư viện Scala
- 18. Thư viện kiểm tra ngữ pháp tiếng Anh cho C++
- 19. github cho mac không cho phép thực hiện kiểm tra từng phần/cam kết
- 20. VS2012 Thực hiện kết quả kiểm tra xuất hiện trong cửa sổ Kết quả kiểm tra
- 21. Thực hiện phép thử với junit
- 22. Phân cấp kiểm tra DUnit
- 23. Thực hiện các cuộc gọi lồng nhau để "thực hiện" với thư viện Fabric của Python
- 24. Thư viện quản lý giấy phép
- 25. Cấp phép AAC/MP3
- 26. IronPython có thực hiện thư viện chuẩn python không?
- 27. Thư viện để thực hiện RSA trong C
- 28. Cách chức năng thư viện trong Haskell được thực hiện
- 29. Thư viện C++ để xây dựng đường dẫn thực hiện
- 30. Trật tự thực hiện trường hợp kiểm tra trong pytest
+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. –
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ả! –