SHA-1 è rotto . Quando si utilizza SHA-1 per verificare la firma dei file di licenza, un utente malintenzionato può generare un file di licenza che trasferirà l'algoritmo di verifica in un tempo ragionevole. Tutto ciò di cui hanno bisogno (i tuoi algoritmi di verifica e tutti i segreti condivisi) devono far parte del tuo programma, altrimenti non potrebbe effettuare la verifica offline.
Ma ci sono molti altri algoritmi di hash che puoi usare come semplice rimpiazzo. Quando l'algoritmo hash non ha debolezze considerevoli e le tue chiavi di licenza hanno abbastanza entropia (abbastanza lunga parte completamente casuale e unica ) non ha nemmeno bisogno di essere un algoritmo particolarmente lento, perché gli attacchi a forza bruta sono irrealizzabile. Ad esempio, potresti utilizzare uno degli algoritmi di SHA-2 o SHA-3 famiglie. Nonostante il nome non hanno molto in comune con SHA-1, quindi la vulnerabilità non si applica a loro.
Tuttavia, il tuo cliente dovrebbe piuttosto essere preoccupato che un cracker rilasci una patch per rimuovere del tutto il codice di controllo della licenza dal programma binario. In pratica, la protezione da copia è raramente efficace contro un determinato aggressore. Quando viene eseguito completamente sul computer degli utenti, non può essere efficace al 100%, poiché viene eseguito sotto il controllo degli utenti. Funziona principalmente rendendo la meno conveniente della pirateria piuttosto che acquistarla, non rendendola impossibile.
Il che mi porta a un'altra considerazione importante: la migliore protezione contro la copia è che rende il prodotto facile da acquistare . Maggiore è il numero di cerchi in cui l'utente deve passare per ottenere e applicare una licenza appropriata, più è probabile che cercheranno "metodi alternativi" per farlo funzionare. I passaggi menzionati nell'articolo collegato alla domanda (l'utente dice al dispositivo-id del fornitore, le risposte del venditore con il file di licenza ...) suonano molto più difficile del googling di "JMA's program crack download".