원래이 답변을 썼을 때 라이센스 키의 '오프라인'유효성 검사에 관한 문제라는 가정하에있었습니다. 대부분의 다른 답변은 온라인 확인을 처리하므로 처리하기가 훨씬 쉽습니다 (대부분의 로직은 서버 측에서 수행 할 수 있음).
오프라인 확인을 사용하면 가장 어려운 점은 수많은 고유 라이센스 키를 생성하고 쉽게 확인되지 않는 강력한 알고리즘 (예 : 간단한 확인 숫자)을 유지할 수 있다는 것입니다.
나는 수학에 정통하지는 않지만 이것을하는 한 가지 방법 은 그래프를 그리는 수학 함수 를 사용하는 것입니다.
플롯 된 선은 (충분한 주파수를 사용하는 경우) 수천 개의 고유 한 점을 가질 수 있으므로 해당 그래프에서 임의의 점을 선택하고 어떤 방식 으로든 값을 인코딩하여 키를 생성 할 수 있습니다
예를 들어이 그래프를 플로팅하고 4 개의 점을 선택하고 "0, -500; 100, -300; 200, -100; 100,600"과 같은 문자열로 인코딩합니다.
우리는 알려진 고정 키로 문자열을 암호화하고 (거의 약하지만 목적을 제공합니다) Base32 를 통해 결과 바이트를 변환 하여 최종 키를 생성합니다
그런 다음 응용 프로그램은이 프로세스 (base32를 실수로 해독, 해독, 포인트 디코딩)를 취소 한 다음 각 포인트가 비밀 그래프에 있는지 확인할 수 있습니다.
상당히 많은 양의 고유하고 유효한 키를 생성 할 수있는 상당히 적은 양의 코드
그러나 모호한 보안은 매우 안전합니다. 코드를 분해하는 데 시간을 내면 누구나 그래프 기능과 암호화 키를 찾은 다음 키 생성기를 조롱 할 수 있지만, 불법 복제를 늦추는 데 매우 유용 할 것입니다.