나는 최근에 비슷한 문제가 있었고 다음과 같이했습니다. 우선은 몇 가지 독특한 시스템 식별 값을 얻었다 : HDD 일련 번호
가 I이 값을 가져다
(아래 업데이트를 판독 임의이지만 결정적 방식으로 결합 된 주소) (추가! , xoring, 나누기 및 나머지 유지 등). 값이 문자열 인 것처럼 반복하고 창의적으로 작업하십시오. 결국 문자와 숫자의 ASCII 범위로 변환 할 수있는 바이트 리터럴을 얻게되어 노이즈처럼 보이지 않는 독창적 인 "읽을 수있는"코드를 얻게됩니다.
또 다른 접근법은 단순히이 값들을 연결 한 다음 그 위에 무언가를 xoring하여 (그리고 아마도 문자로 다시 변환하여) "덮어 버리는 것"이 될 수 있습니다.
적어도 하나의 입력이 고유해야합니다 (MAC 주소). 고유하다는 말입니다. 물론이 고유성을 날려 버리지 않으려면 숫자 이론에 대한 이해가 필요하지만 어쨌든 충분해야합니다.
중요 업데이트 :이 게시물을 통해 나는 암호에 관한 몇 가지 사실을 알게되었고, 임의 조합 (본질적으로 자신의 해시)을 구성하는 것이 거의 잘못된 생각이라고 생각합니다. 실제로 사용되는 해쉬 함수는 (충돌 확률이 낮은 것처럼) 잘 동작하고 중단하기가 어렵도록 구성됩니다 (다른 해시 값과 동일한 해시 값을 갖는 값을 생성하는 능력). 그러한 기능을 구축하는 것은 매우 어려운 컴퓨터 과학 문제이며 자격을 갖추지 않으면 시도하면 안됩니다. 이에 대한 올바른 접근법은 하드웨어 (즉, 게시물에 나열된 정보)에 대해 수집 할 수있는 정보를 연결하고 검증 가능한 안전한 출력을 얻기 위해 암호화 해시 또는 디지털 서명을 사용하는 것입니다. 암호화 알고리즘을 직접 구현하지 마십시오. 피하기 위해 많은 지식을 필요로하는 많은 취약점 함정이 있습니다. 알고리즘 구현에는 잘 알려지고 신뢰할 수있는 라이브러리를 사용하십시오.
읽어야하는 항목 : http://stackoverflow.com/questions/5488249/how-do-i-enforce-an-expiration-date-for-a-trial-install-of-my-software/5488752#5488752 (특히 마지막 두 단락). – Damon