0

この質問のタイトルを何にしようか迷っていますが、ここで助けを求めています。

私は CORE JAVA Platform でデスクトップ ベースのアプリケーションを作成する会社で働いています。ソフトウェアをアクティベートするためのアクティベーションコードを提供しています。アクティベーションのコンセプトは -

ユーザーがアクティベーション コードを入力します --> ソフトウェアがサーバーにヒットし、必要なすべてのファイルをダウンロードします --> アクティベーションが完了しました。

1 日に 1 回、当社のソフトウェアはサーバーにアクセスして、アクティベーション コードの有効期限が切れているかどうかを確認します。

問題 - 通常のインターネット接続を持たない新しいクライアントがあります。どういうわけか、彼らは一度だけインターネット接続を提供することに同意しました-

ユーザーがアクティベーション コードを入力します --> ソフトウェアがサーバーにヒットし、必要なすべてのファイルをダウンロードします --> アクティベーションが完了しました。

しかし、その後インターネットに接続できません。ソフトウェアを停止して、アクティベーション コードの有効期限についてサーバーに確認できます。しかし、私の問題は-

1) アクティベーション コードの有効期限が実際に切れているかどうかを確認するにはどうすればよいですか? (アクティベーションコードは1年間のみ有効です)

2) 有効期限が切れた場合 ユーザーが新しいアクティベーション コードを入力した場合、これが 1 年間有効な有効なアクティベーション コードであることを確認するにはどうすればよいですか?

4

1 に答える 1

1

1) 登録日を保存して、システムの日付と比較できます。もちろん、ユーザーは日付を調整できます。以前は、最後に見た日付を常に保存するソフトウェアがいくつかありましたが、日付を過去に移動すると、文句を言ってすぐに期限切れになりました。このようなこともできますが、もちろん、サーバーと通信するほど安全ではありません。

2) 新しいキーと以前のキーを含むアクティベーション キーのフォーマットを作成します。したがって、最初のキーは、たとえば A です。これは、サーバーと通信して、A が正常かどうかを確認するのに適しています。新しいキーは AB のように見えるかもしれません。これは、「A を置き換え、アクティベーションの別の年を追加し、B と呼ばれるので、1 年後には BC のようなキーが必要になる」という意味です。これを安全にエンコードする方法について少し考える必要がありますが、うまくいくと確信しています (たとえば、B を A で暗号化すると、B はアクティベーション コード A を持つマシンでのみ使用できます)。

于 2010-12-28T04:42:23.773 に答える