Мне интересно, можно ли сгенерировать «ключ», который действителен в течение (приблизительно) трех месяцев?
Например, предположим (гипотетически), что я сгенерировал такой ключ, как этот(псевдокод):
Key = HASH ( MachineID, Salt );
И способ, которым я проверяю ключ действительный, заключается в проверке следующим образом:
isValid(Key)
{
return Key == HASH ( MachineID, Salt )
}
Как бы вы расширили это, чтобы сгенерировать такой ключ:
Key = HASH ( MachineID, Salt, LastMonth, ThisMonth, NextMonth );
Но все-таки правильно ли работает ваш isValid?
Один из способов, который я могу увидеть, это:
isValid(Key)
{
return Key == HASH ( MachineID, Salt, (LastMonth), (ThisMonth), (NextMonth) )
|| Key == HASH ( MachineID, Salt, (LastMonth-1), (LastMonth), (ThisMonth) )
|| Key == HASH ( MachineID, Salt, (ThisMonth), (ThisMonth+1), (ThisMonth+2) )
}
Но я хотел бы знать, приходят ли какие-нибудь идеи получшеум.