Generare un numero casuale dato un seme

Forse sarebbe più "casuale" se prendessi un valore da un Pin analogico a cui non è collegato nulla poi o usi map per trasformarlo nel valore che vuoi così sei sicuro che ricevi un valore! =0

Se poi usasse la libreria che gli ho suggerito QUI, e che lui ha [u]completamente ignorato[/u], sarebbe ancora meglio ]:D ]:D ]:D

Guglielmo

Ho risolto in un altro modo... :P

Ora il mio prossimo passo è generare invece one time password. Ho trovato come algoritmo il SHA-1, ma non ho capito bene come potergli passare il seed e come scegliere il numero da concatenargli. Poi mi si pone il problema di dover ridurre la otp a un numero a 4 cifre per visualizzarlo su display LED. Sapete suggerirmi qualche lavoro simile o darmi consiglio?

:)

Bene ho trovato la libreria da Cryptosuite dello SHA1 che da quello che ho capito in giro è più sicuro rispetto lo MD5:

https://github.com/Cathedrow/Cryptosuite/blob/master/Sha/sha1.h

Ora scusate la mia ignoranza ma è la prima volta che lavoro con gli algoritmi e le mie conoscenze di programmazione sono di base, quindi scusatemi se sto per fare delle domande sciocche:

1) ho incluso la libreria nel mio sketch, ma come si usa ovvero come si richiama la funzione?

2) la mia intenzione è generare one time password, come faccio a passargli il seed (1 byte) e il numero da cui partire?

  1. Ho usato la CryptoSuite un paio d’anni fa, non ricordo bene.
    Però la classe SHA è distribuita con degli esempi, hai provato a guardarne uno?

  2. sei sicuro che ti serva una funzione di hashing? Una funzione di hashing come la SHA-1 restituisce una stringa a 128 bit che corrisponde alla somma di controllo dei dati passati alla funzione. Potresti forse usare la funzione così: passi un timestamp composto da data/ora e da quello calcoli l’hash con SHA-1. Siccome il tempo passa, non c’è possibilità (a meno di non passare la stessa combinazione di data/ora) di avere una somma di controllo identica ad un’altra. Questa potrebbe essere la tua password OTP. Però la cosa è un pò più complessa, forse dovresti tenere conto anche delle password generate in precedenza.
    http://en.wikipedia.org/wiki/One-time_password