Firma dati di transazione
Ho bisogno di un'idea per sviluppare un algoritmo molto sicuro per autenticare le operazioni online usando PHP nel server e un'app Android nel dispositivo dell'utente.
Qual è l'idea?
L'utente prova ad accedere al sistema. Il server invia una richiesta di conferma al dispositivo dell'utente (Android).
L'utente vede la data, il paese, la città, l'IP, il browser e il sistema operativo nell'app, tutto ciò che riguarda il tentativo di accesso e, se tutte le informazioni corrispondono, può fare clic su conferma. L'app genera un token a 8 cifre decimali basato su queste informazioni e lo invia al server, il server proverà a generare un token con le stesse informazioni e se entrambi i token corrispondono, il server accetta il tentativo di accesso.
Questa è solo una possibile operazione.
Di cosa ho bisogno?
Un algoritmo universale per autenticare qualsiasi operazione online.
per esempio:.
function generateRandonTokenUsingNParameters(){
$args = func_num_args();
$token = ""; //Start token
for($i=0; $i < $args; $i++){
$token = CRAZY_MATH_USING_ALL_PARAMETERS_TO_GENERATE_8_DIGITS_TOKEN($token, func_get_arg($i));
}
return $token; //Final token based in all informations of the operation
}
//e.g.
//LOGIN INFORMATION
$date = "2014-05-30 01:02:00"
$ip = "192.168.0.1";
$browser = "Chrome";
$city = "Los Angeles";
$country = "USA";
$os = "Windows";
$android_app_local_seed = "698dc19d489c4e4db73e28a713eab07b"; //each user have a different seed in his app
//PRINTING LOGIN TOKEN
echo generateRandonTokenUsingNParameters($date, $ip, $browser, $city, $country, $os, $android_app_local_seed);
Che cosa utilizzeresti nella funzione CRAZY_MATH_USING_ALL_PARAMETERS_TO_GENERATE_8_DIGITS_TOKEN ()?
P.S .: Ho bisogno di un token numerico a 8 cifre decimali. Perché se l'utente non dispone di una connessione Internet, può leggere i dettagli dell'operazione utilizzando il codice QR e dovrà inserire manualmente il token nel sistema.