Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2014
    Messaggi
    76

    Generazione 16 Bytes esadecimali casuali non ripetibili

    Come da titolo avrei bisogno di capire come generare 16bytes esadecimali CASUALI e NON RIPETIBILI.

    Non so ancora bene con che linguaggio, probabilemente c# o java, in ogni caso, come procedo?

    genero un numero randomizzato con funzioni di libreria tipo timer lo moltiplico per farlo diventare abbastanza grande da tenere 16bytes e poi lo converto in hex?

    Sono sicuro della non ripetibilità? dovrei salvarmi i numeri generati e fare un check? come posso checkare l'unicità in modo efficiente?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Non è che ti basterebbe una API come questa ?

    https://msdn.microsoft.com/it-it/lib...(v=vs.85).aspx
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2014
    Messaggi
    76
    Quote Originariamente inviata da oregon Visualizza il messaggio
    Non è che ti basterebbe una API come questa ?

    https://msdn.microsoft.com/it-it/lib...(v=vs.85).aspx
    Oh si 128bit, 16byte sarebbe perfetta; il problema è che mi posso fidare che non ci siano collisioni? che sia unico?

    Nel caso volessi comunque fare un check e quindi salvarmi i numeri generati, quale sarebbe il modo più efficiente?
    -file di testo semplice
    -file excel
    -file access

    Per il file di testo salvare tutto come unica stringa e poi fare un indexOf (ricerca) del nuovo codice generato? utilizzando librerie di sistema dovrebbe già essere ottimizzato
    ci sono limitazioni o rischi di overflow sulla lunghezza di una stringa?

  4. #4
    http://stackoverflow.com/questions/1...-is-not-unique
    In sintesi: è più probabile che il tuo PC venga colpito da un meteorite piuttosto che ottenere GUID duplicati, anche generandone qualche miliardo al secondo per i millenni a venire.
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2014
    Messaggi
    76
    Quote Originariamente inviata da MItaly Visualizza il messaggio
    http://stackoverflow.com/questions/1...-is-not-unique
    In sintesi: è più probabile che il tuo PC venga colpito da un meteorite piuttosto che ottenere GUID duplicati, anche generandone qualche miliardo al secondo per i millenni a venire.
    si con 2^128 in effetti hai ragione, però in previsione di formattazione/sostituizione PC, varie ed eventuali potrei avere un "nuovo" GIUD uguale al vecchio? come viene generato? che seme utilizza? un orario come il Timer?

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Quote Originariamente inviata da Mrk31 Visualizza il messaggio
    si con 2^128 in effetti hai ragione, però in previsione di formattazione/sostituizione PC, varie ed eventuali potrei avere un "nuovo" GIUD uguale al vecchio? come viene generato? che seme utilizza? un orario come il Timer?
    Non conosco i dettagli ma dovrebbe andare bene ... leggi

    https://it.wikipedia.org/wiki/GUID
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Normalmente si parte da RNG di qualità crittografica alimentati con l'entropia raccolta dal sistema (latenza di rete, tempi di accesso a disco, movimenti del mouse, delay tra le pressioni tasti da tastiera, eventuali letture di sensori, eventuali RNG hardware presenti).
    Amaro C++, il gusto pieno dell'undefined behavior.

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Quote Originariamente inviata da MItaly Visualizza il messaggio
    Normalmente si parte da
    Mah ... parlando sempre di pseudo-random, ho i miei dubbi, comunque va bene
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Considerato il fatto che è su questa roba che si basa la sicurezza di praticamente tutte le comunicazioni sarà il caso che funzioni bene.
    Amaro C++, il gusto pieno dell'undefined behavior.

  10. #10
    In generale gli algoritmi come quello di cui si discute si affidano pesantemente ad elementi univoci per costruzione, come i silicon ID (di cui questo è un semplice ed economico esempio discreto) e gli RNG crittografici integrati nei vari chipset.

    Il silicon ID è veramente un uovo di Colombo: si tratta banalmente dell'equivalente su silicio del classico numeratore progressivo elettromeccanico applicato alle macchine da stampa per ricevute, tagliandi, bolle, fatture ed altri stampati di natura fiscale. Sorprendentemente però l'idea ha avuto uno sfruttamento commerciale intensivo solo da pochi anni: in passato occorrevano ordini custom, emulazioni artigianali vendor-centric o il ricorso agli ID analoghi contenuti in qualche logica programmabile.

    In ogni caso, si può essere certi che negli utlimi dieci/dodici anni almeno una mezza dozzina di pezzi di silicio su una comune MB mainstream recano un ID univoco a 48 bit o superiore facilmente accessibile via software, che può essere sfruttato in concomitanza con l'RNG hardware, eventuale TPM a sua volta integrato nel chipset, e altri accorgimenti per generare un ID effettivamente a prova di collisione, come il GUID di cui sopra.
    • Un plauso a Grisha Perelman, raro esempio di genuino anticonformismo umano e scientifico.

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.