Suggerimento di metodo di crittografia per risultati di dimensioni fisse brevi

0

Sto cercando un metodo di crittografia che riceve una variabile int e restituisce esattamente 11 cifre esadecimali .

Sto iniziando su un'applicazione esistente, che ha già un database di oltre 130.000 registri, ognuno con il proprio codice di 11 cifre esadecimali. Il vecchio algoritmo ha generato solo 11 cifre esadecimali casuali, senza alcuna informazione codificata. Il nuovo algoritmo dovrebbe crittografare l'id di una tabella (tipo di dati int, 4 byte) in un 11 hex-dig. In caso di collisione (con vecchi registri, che dovrebbero essere mantenuti) , sto pensando di usare un contatore come "salt", combinarlo con l'id che voglio criptare e ripetere l'incremento del contatore fino a quando non si scontrano.

Ho cercato molto in questi giorni sui metodi di crittografia, sui metodi simmetrici e asimmetrici, ma tutti danno un risultato più grande della mia limitazione di 44 bit / 11 cifre esadecimali. Ho anche scoperto che un testo cifrato così breve non è sicuro, ma questi dati non sono così importanti e non posso modificare questa limitazione dell'applicazione, quindi va bene.

Perché ho bisogno di convalidare questi codici in futuro (controlla se l'id decrittografato è presente sulla tabella, quando le informazioni datetime indicano che si tratta di un nuovo codice algoritmo) , non posso prendere solo una parte di il testo cifrato (ad esempio, usando qualcosa come "LEFT (code, 11)") .

L'applicazione funziona su PHP / MySQL. Esiste un metodo di crittografia che parametrizza la lunghezza dell'output? O dovrei sviluppare una crittografia personalizzata? In questo caso, qualche suggerimento per evitare collisioni?

Grazie in anticipo.

    
posta Ulisses 10.12.2014 - 17:53
fonte

0 risposte

Leggi altre domande sui tag