2011-01-12 1 views
1

나는 "정직한 사람들을 정직하게"키우기 위해 간단한 라이센스 키 시스템을 만들고 있습니다. 특히 엄격한 암호화는 신경 쓰지 않습니다.순수한 md5 출력의 라이센스 키 출력을 일반적인 "XXXX-YYYY-ZZZZ"유형 코드로 변경해야합니까?

데모 제한 사항에 짜증이 난다면, 내 등록 웹 사이트로 이동하여 지불하고 이메일을 보내주십시오. 나는 그들에게 라이센스 키를 준다.

은 정말, 정말 간단한 일을 유지하고있어 :

license_key = md5(email + "Salt_String"); 

내가 가진 PHP와 C# 기능이 동일한 알고리즘 것을 실행하고 동일한 키를 얻을./유형을 기억하는 것이 잠재적으로 어려운

A69761CF99316358D04771C5ECFCCDC5 

:

문제는 이러한 기능의 출력이 같은 32 문자열이 때문이다. 예, 복사/붙여 넣기에 대해 알고 있지만 모든 유료 고객이 소프트웨어 잠금을 해제하는 것이 매우 쉽습니다.

어떻게 든이 긴 문자열을 짧은 것으로 변환해야합니까?

그래서, 내가 첫 번째 6 자리를 사용한다고 말할 수 있습니다 : A69761

분명히한다는 점에서 방법이 더 암호 충돌이 있지만 전혀 실용화 문제 것인가?

사람이 읽을 수있는/입력 가능하게 만드는 다른 아이디어?

답변

3

왼쪽으로 6-10 개의 기호로 충분합니다. 어쨌든 사용자는 코드를 추측 할 수 없으며 쉽게 입력 할 수 있습니다. 서버에 각 라이센스를 등록하는 것이 좋습니다. 사용자가 정말로 정직하고 다른 사람에게 라이센스 키를주지 않았는지 확인할 수 있습니다.

+0

"서버에 각 라이센스를 등록하십시오"라는 말은 연결될 때마다 앱이 집으로 전화해야한다는 의미입니까? 나는 진짜 크래커가 그것도 돌아 다닐 수 있다고 생각하기 때문에 당분간은 그것을 피할 것이다. – cksubs

+0

첫 번째 6-10 기호 만 사용하여 다시 한 번 감사드립니다. – cksubs

+0

"서버의 각 라이센스를 등록하십시오."- 아니요, 사용자가 라이센스 정보를 앱에 입력하는 경우에만 의미합니다. 그건 진짜 크래커에 대한 것이 아니라 물론, 친구에게 라이센스 키를주는 것에 도움이 될 것입니다. –

1

내 경험상 사용자에게 30 자 코드를 입력하거나 복사/붙여 넣으라고 요청하면 실망한 고객이 생길 수 있습니다. 그것은 그렇게 어렵지 않습니다. 사람들이 신경 쓰지 않는 장애물 일뿐입니다.

my business에 사용 된 해결책은 별도의 시험 다운로드가 있어야합니다. 라이센스 사본을 얻으려면 고객이 전자 우편 주소를 입력하고 다운로드 양식에 짧은 사용자 ID를 입력하십시오. 전자 메일 만 입력하면 자동으로 사용자 ID가 다시 전송됩니다. 당신은 이것에 대해 물어 보지 않았지만, 고객이 필요로하는 코드를 자동으로 검색하는 시스템은 간단한 시스템을 갖는 것보다 훨씬 중요합니다. 다운로드 시스템은 데이터베이스에서 사용자의 세부 정보를 조회하고 사용자 라이센스가 포함 된 SetupSomeProductCustomerName.exe를 제공합니다. 이 설정은 추가 식별이나 서버 연결없이 고객의 라이센스 사본을 설치합니다.

이 시스템은 우리에게 정말 효과적입니다. 고객은 백업 할 파일이 하나 뿐이며 향후에 소프트웨어를 다시 설치할 수 있도록 잃을 일련 번호는 없습니다.

즉, 단방향 해시를 사용하는 시스템을 사용하려면 더 작은 해시를 생성하는 알고리즘을 사용하기 만하면됩니다. 예 : CRC-32는 8 자리의 16 진수로 나타납니다.

해시가 암호화 적으로 안전하다는 의미는 없습니다. 크래커는 단순히 코드를 살펴보고 전자 메일 주소를 라이센스 키로 변경하는 전체 코드 블록을 복사 한 다음 keygen에 붙여 넣습니다. 그런 다음 모든 이메일 주소에 대한 라이센스 키를 생성 할 수 있습니다.그들은 해싱 알고리즘이 얼마나 복잡한 지 상관없이이를 수행 할 수 있습니다.

이 문제를 방지하려면 공개 키 암호화를 사용해야합니다. 공개 키 암호화를 사용하면 입력하기에 너무 긴 키가 생성됩니다. 해당 경로로 이동하면 긴 키를 사용하여 고객을 괴롭 히거나 키 파일을 붙여 넣거나 분리하거나 위에서 설명한 개인화 된 다운로드 시스템을 사용할 수 있습니다.

+0

평가판을 설치 한 사용자를 어떻게 처리하고 전체 버전을 제거하기 위해 다시 설치해야합니까? 나는 전체로 잠금을 해제 할 수있는 하나의 다운로드가 더 적은 지원을 필요로한다고 생각할 것이다. 그리고 정식 버전에는 라이센스 시스템이 없습니까? 여전히 성가심/억제력이 약간있는 keygens보다 나빠집니다. – cksubs

+0

또한, 6-10 자로 단축 된 md5보다는 CRC-32와 같은 것을 사용하는 "임시 검증"(보안 암호화가 아닌)에 대한 좋은 논리가 있습니까? 둘 다 '충분히 좋을까?' 일치하는 C#과 PHP md5 함수를 얻는 것은 시간이 많이 소요 되었기 때문에 다시 실행하지는 않을 것입니다. – cksubs

+0

CRC-32는 전송 오류를 탐지하기위한 체크섬으로 의도되어 있으며, 쉽게 파손되었습니다. 단축 된 보안 해시는 더 좋은 아이디어입니다. –