Quindi sto provando a creare un server di licenze, in cui è necessario controllare le licenze delle applicazioni quando si effettua l'accesso o quando si utilizza l'applicazione. Ma alcune di queste applicazioni funzionano offline la maggior parte del tempo, quindi ho bisogno di avere una sorta di "memorizzazione nella cache" dell'ultimo controllo della licenza con una data in cui la licenza dovrebbe essere controllata (diciamo come ogni settimana). Per il momento sto memorizzando questo nel database dell'applicazione, ma ho bisogno di assicurarmi che quella "prossima data di controllo" non possa essere modificata dall'utente dell'applicazione.
Così mi è venuta in mente la seguente idea: quando una licenza deve essere controllata (perché è passata più di una settimana), il server controllerà la licenza e deciderà la "prossima data di controllo". Quindi crittograferà quella data e la invierà all'applicazione che la memorizzerà nel database. Quindi, quando verrà utilizzata l'applicazione, riceverà la data crittografata, quindi la decrittografa e la controllerà. Quindi, quando l'applicazione tenta di crittografare una data da solo, non sarà in grado di decifrare perché non utilizza la stessa chiave utilizzata dal server per crittografare.
Inizialmente pensavo di avere una chiave privata sul server e una chiave pubblica sull'applicazione, ma non sarebbe stata la crittografia, ma la firma, e ciò avrebbe comportato l'invio della data in testo chiaro, che non è quello che ho volere. O c'è un modo per utilizzare la firma per cui l'applicazione non può cambiare la data?