Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20
  1. #1

    [algoritmo] Creazione numero univoco

    Salve, ho la necessità di creare un numero in modo che risulti unico e che non sia possibile che "riesca" da una funzione.
    Avevo pensato a qualche algoritmo che mettesse di mezzo il tempo... però penso esca un numero troppo lungo... diciamo che dovrebbe essere una cosa tipo: 541354422 una cosa simile.
    Consigli?

  2. #2
    potresti usare timestamp in ms + un numero casuale e fare sha-1...

  3. #3
    non ho capito

    se vuoi tirare fuori un numero univoco puoi usare il CRC32

  4. #4
    scusami, magari sono io che non penso prima di rispondere... ma usare un rand?
    Nicolò "Remotes" Lucia
    "the 449257th penguin"
    PHP - GNU/Linux - modding
    "Long Live Aslan... and Merry Christmas!!!" [cit.]

  5. #5
    allora, io non ho capito che intendi per:
    "che non sia possibile che "riesca" da una funzione."

    comunque rand() non può essere usato perchè magari possono uscirti 2 numeri uguali, a lui serve un numero che sia univoco...

    Se hai a disposizione un db invece di inventare strani algoritmi puoi fare quello che faccio di solito:
    Ti crei una tabella contenente un id autoincrementante
    effettui un inserimento in questa tabella e recuperi sulla stessa connessione l'id appena inserito...così sei sicuro che sia univoco...
    naturalmente sarebbe meglio usare le transazioni e controllare che la tabella non cresca troppo...

    magari al numero intero puoi attaccarci il time stamp e stai a posto...

  6. #6
    Originariamente inviato da V1RuZ
    allora, io non ho capito che intendi per:
    "che non sia possibile che "riesca" da una funzione."

    comunque rand() non può essere usato perchè magari possono uscirti 2 numeri uguali, a lui serve un numero che sia univoco...

    Se hai a disposizione un db invece di inventare strani algoritmi puoi fare quello che faccio di solito:
    Ti crei una tabella contenente un id autoincrementante
    effettui un inserimento in questa tabella e recuperi sulla stessa connessione l'id appena inserito...così sei sicuro che sia univoco...
    naturalmente sarebbe meglio usare le transazioni e controllare che la tabella non cresca troppo...

    magari al numero intero puoi attaccarci il time stamp e stai a posto...
    hai capito il concetto ma mi sono espresso male, cmq hai capito.

    Cmq, ammettiamo che proprio non voglio usare il db.

    Mi spiegate il crc32, il sha-1....? (non c'ho mai avuto a che fare)

  7. #7
    CRC32, MD5, SHA-1, SHA256, SHA384, SHA512 ecc ecc ecc sono sistemi di hashing

    ho menzionato il CRC32 perché quest'ultimo restituisce un valore di 4 byte, ovvero 32 bit, che è convertibile in un numero intero (signed o meno)

    se fai

    $valore = sprintf('%u', crc32(uniqid(microtime(), true)));

    ottieni un numero intero compreso tra lo zero e 4 miliardi

  8. #8

  9. #9
    Originariamente inviato da zannas
    danke, ps è unico vero?
    beh che sia unico non ne hai mai la sicurezza...soprattutto con crc che è a 32 bit...
    dipende da quello che ci devi fare co sto numero unico...

  10. #10
    Originariamente inviato da V1RuZ
    beh che sia unico non ne hai mai la sicurezza...soprattutto con crc che è a 32 bit...
    dipende da quello che ci devi fare co sto numero unico...
    4 miliardi di possibili combinazioni sono tante, ovviamente si può aumentare la cifra usando, per esempio, il numerico di un md5, ma cifre a 128 non sono supportate da PHP quindi dovresti usare una conversione manuale, ergo devi scriverti il codice, che passa la cifra direttamente in stringa

    Se non ti serve per forza un numero puoi usare lo SHA-1 che ottieni una stringa di 40 caratteri composta da numeri e lettere dalla a all'f

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.