Показать сообщение отдельно
Старый 18.12.2011, 10:44   #1
Данил
Модератор
 
Аватар для Данил
 
Регистрация: 11.07.2007
Сообщений: 2,910
Написано 686 полезных сообщений
(для 1,694 пользователей)
Система защиты - активация игры и ключи

Вообще, на какой основе обычно генерируются ключи к играм?
И игры воспринимают их? Понимаю, что программа берет ключ, проверяет его - если сходится - то доступ разрешен. Если нет - то нет. Но какие вообще есть алгоритмы?

От балды, первый раз попробовал написать что-нибудь за 10 минут.
Смысл такой, что ключ состоит из цифр в 16сс (визуально) но с обратном счетом. сумма должна быть равна 200
пример ключа
9B39D-B2020-5BA4C-9E079-82DAE-E5DFF

Кстати, goto - ололо
SeedRnd MilliSecs()
Global key:String=NewKey()

Print key
Print TestKey()
Print DrawKey()



Function DrawKey:String()
Local key2:String
For i=1 To 30
key2=key2+Mid(Key,i,1)
If i Mod 5 = 0 And i<>30 Then key2=key2+"-"
Next
Return key2
End Function

Function TestKey:String()
Local a:Int
For i=0 To 30
'key=StrToInt
a=a+StrToInt(Mid(Key,i,1))
Next
Return "Key accept"
End Function

Function NewKey:String()
Local s:String
#start
S=""
A=200
B=0
C=0
D=0
For i=0 To 29
B=A
If A>15 Then B=15
If A<0 Then B=0
C=Rand(0,
A=A-C
D=D+C
s=s+inttostr(C)
Next
If D<200 Then Goto start
Return s
End Function

Function StrToInt:Int(str:String)
Select str
Case "0"; Return 15
Case "1"; Return 14
Case "2"; Return 13
Case "3"; Return 12
Case "4"; Return 11
Case "5"; Return 10
Case "6"; Return 9
Case "7"; Return 8
Case "8"; Return 7
Case "9"; Return 6
Case "A"; Return 5
Case "B"; Return 4
Case "C"; Return 3
Case "D"; Return 2
Case "E"; Return 1
Case "F"; Return 0
End Select
End Function

Function IntToStr:String(n:Int)
Select n
Case 0; Return "F"
Case 1; Return "E"
Case 2; Return "D"
Case 3; Return "C"
Case 4; Return "B"
Case 5; Return "A"
Case 6; Return "9"
Case 7; Return "8"
Case 8; Return "7"
Case 9; Return "6"
Case 10; Return "5"
Case 11; Return "4"
Case 12; Return "3"
Case 13; Return "2"
Case 14; Return "1"
Case 15; Return "0"
End Select
End Function
(Offline)
 
Ответить с цитированием