Ciao.
Posso andare incontro a dei problemi
usando SHA1 con un campo varchar(40)
sul manuale ho trovato che sarebbe
preferibile usare un campo BLOB
(ma poi il valore lo devo salvare in binario)
Aspetto chiarimenti
![]()
Ciao.
Posso andare incontro a dei problemi
usando SHA1 con un campo varchar(40)
sul manuale ho trovato che sarebbe
preferibile usare un campo BLOB
(ma poi il valore lo devo salvare in binario)
Aspetto chiarimenti
![]()
Without faith, nothing is possible. With it, nothing is impossible
http://ilwebdifabio.it
ma blob è per indirizzi web, ad esempio indirizzo della foto...
invece SA1 è criptazione...
vorresti criptare giusto?
..:: GSFLASH ::..
HTTP://WWW.GSFLASH.IT
MCTS - ACP - OCP - ECDL
Ubuntu 7.10/OpenSuse 10.3/Vista Premium/MacOSX Leopard
My authentic japanese name is 薗田Sonoda (garden field) 大河 Taiga (big river)
rende un numero exadecimale .... 0-9 A-F
in un campo blob ci metti un file, non una stringa ascii.
e non e' criptato ma un hash
Il silenzio è spesso la cosa migliore. Pensa ... è gratis.
ehm mi ero sbagliato, giusto hashare, non criptare![]()
..:: GSFLASH ::..
HTTP://WWW.GSFLASH.IT
MCTS - ACP - OCP - ECDL
Ubuntu 7.10/OpenSuse 10.3/Vista Premium/MacOSX Leopard
My authentic japanese name is 薗田Sonoda (garden field) 大河 Taiga (big river)
Grazie a tutti
![]()
Without faith, nothing is possible. With it, nothing is impossible
http://ilwebdifabio.it
Alternativamente, che è quello che ti consiglio, usa un campo BINARY 20 e al momento dell'inserimento fai una cosa molto semplice
mysql_query("INSERT INTO tabella (hash, .....) VALUES(0x" . sha1($valore_per_hash) . ", ....)");
In questo modo gli dici a mysql di inserire un valore binario nel campo hash che è un binary 20. Questo conviene per 2 motivi:
- quando lo usi nelle where mysql deve eseguire la metà del lavoro nella fase del confronto, cosa utile su grosse tabelle
- essendo un binary (o un varbinary se la tabella non è di tipo fisso) mysql fa una comparazione case sensitive ovvero non è costretto a convertire le due stringhe di dati in maiuscolo/minuscolo prima di fare la comparazione per far si che abbiano lo stesso casing
Ovviamente se sono pochi dati è indifferente, ma se già prevedi di superare il migliaio di righe nella tabella o comunque prevedi continue query con l'hash allora ti conviene farlo!
In fine se non hai bisogno di una tabella che contenga dati che debbano rimanere sul disco, come ad esempio una tabella delle sessioni, ti conviene usare una tabella di tipo MEMORY o HEAP, che è uguale, perché ti conserva la struttura su disco ma i dati stanno in memoria
The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand
messo in bachecaOriginariamente inviato da daniele_dll
Alternativamente, che è quello che ti consiglio, usa un campo BINARY 20 e al momento dell'inserimento fai una cosa molto semplice
mysql_query("INSERT INTO tabella (hash, .....) VALUES(0x" . sha1($valore_per_hash) . ", ....)");
In questo modo gli dici a mysql di inserire un valore binario nel campo hash che è un binary 20. Questo conviene per 2 motivi:
- quando lo usi nelle where mysql deve eseguire la metà del lavoro nella fase del confronto, cosa utile su grosse tabelle
- essendo un binary (o un varbinary se la tabella non è di tipo fisso) mysql fa una comparazione case sensitive ovvero non è costretto a convertire le due stringhe di dati in maiuscolo/minuscolo prima di fare la comparazione per far si che abbiano lo stesso casing
Ovviamente se sono pochi dati è indifferente, ma se già prevedi di superare il migliaio di righe nella tabella o comunque prevedi continue query con l'hash allora ti conviene farlo!
In fine se non hai bisogno di una tabella che contenga dati che debbano rimanere sul disco, come ad esempio una tabella delle sessioni, ti conviene usare una tabella di tipo MEMORY o HEAP, che è uguale, perché ti conserva la struttura su disco ma i dati stanno in memoria
![]()
Without faith, nothing is possible. With it, nothing is impossible
http://ilwebdifabio.it