Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
Alcune domande sull'EncryptByPassPhrase
mercoledì 23 marzo 2011 - 19.07
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Cyberking
Profilo
| Junior Member
79
messaggi | Data Invio:
mer 23 mar 2011 - 19:07
Ciao a tutti,
sto provando ad effettuare tramite sql server alcune insert e poi delle select andando a utilizzare il metodo EncryptByPassPhrase
per ora sto scrivendo così
INSERT into miaTabella (campo1,campo2) VALUES ('prova',EncryptByPassPhrase('miaPassword', 'un due tre stella stellina'))
select CONVERT(varchar,DecryptByPassPhrase('miaPassword', campo2))as dato from miaTabella where campo1='prova'
le prime domande sono queste.
Posso fare l'encrypt con qualsiasi tipo di dato, sia numerico che varchar che ntext?
E poi ai fini di peso cosa succede ovvero
se ho un campo varchar 100 e vado a inserire un dato di lunghezza 100 criptato me lo fa fare? (questo tra poco ci arrivo sto facendo varie prove) ma sopratutto a livello di peso di kb l'encrypt quanto incede sul peso?
Ci sono grossi problemi anche di velocità ?
Grazie a tutti.
http://www.gurutour.it
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
mer 23 mar 2011 - 21:16
>le prime domande sono queste.
>Posso fare l'encrypt con qualsiasi tipo di dato, sia numerico
>che varchar che ntext?
Dai BOL: "A variable of type nvarchar, char, varchar, binary, varbinary, or nchar containing the cleartext. Maximum size is 8,000 bytes."
>E poi ai fini di peso cosa succede ovvero
>se ho un campo varchar 100 e vado a inserire un dato di lunghezza
>100 criptato me lo fa fare? (questo tra poco ci arrivo sto facendo
>varie prove) ma sopratutto a livello di peso di kb l'encrypt
>quanto incede sul peso?
Non ho capito bene la domanda: se la colonna è definita varchar(100) potrai memorizzare un valore criptato di al max 100 caratteri.
Dato che il return type della funzione ENCRYPTBYPASSPHRASE è "varbinary with maximum size of 8,000 bytes" definiscila varbinary(8000) e non sbagli più.
>Ci sono grossi problemi anche di velocità ?
A fare? Crittografare una stringa? Qualche ciclo di clock...
>Grazie a tutti.
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
Cyberking
Profilo
| Junior Member
79
messaggi | Data Invio:
gio 24 mar 2011 - 10:22
Intanto grazie, come sempre rapido, gentile e di grande aiuto.
>>E poi ai fini di peso cosa succede ovvero
>>se ho un campo varchar 100 e vado a inserire un dato di lunghezza
>>100 criptato me lo fa fare? (questo tra poco ci arrivo sto facendo
>>varie prove) ma sopratutto a livello di peso di kb l'encrypt
>>quanto incede sul peso?
>Non ho capito bene la domanda: se la colonna è definita varchar(100)
>potrai memorizzare un valore criptato di al max 100 caratteri.
>Dato che il return type della funzione ENCRYPTBYPASSPHRASE è
>"varbinary with maximum size of 8,000 bytes" definiscila varbinary(8000)
>e non sbagli più.
>
dato che aprendo la tabella non vedo quanti caratteri ci sono, la domanda che mi ponevo era questa:
se scrivo 10 caratteri, lui criptandoli ne scrive sempre 10 o di più? e per questo la paura di sforare se definisco un campo dieci e lui ne scrive 11 dovrebbe poi andare in errore, e pesare poi anche di più a livello di bite
>>Ci sono grossi problemi anche di velocità ?
>A fare? Crittografare una stringa? Qualche ciclo di clock...
non ne ho idea, perciò ti chiedo, se andando a criptare e decriptare tipo 5000 caratteri se cambia la velocitàù
esempio una select senza criptare ci mette 1 secondo con ci mette 1,2 secondi (è un esempio)?
ti chiedo questo sopratutto per capire quanti campi mi conviene criptare, se effettivamente quelli realmente sensibili o a questo punto tutti
Aggiungo un altra domanda
Ma in caso di where o where con like, funziona tutto?
Vado sempre a scrivere tipo considerando i dati di prima
INSERT into miaTabella (campo1,campo2) VALUES ('prova',EncryptByPassPhrase('miaPassword', 'un due tre stella stellina'))
select * from miaTabella where campo2= 'un due tre stella stellina'
e
select * from miaTabella where campo2 like '%tre%'
?
Grazie di nuovo
http://www.numero-telefono.it
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
gio 24 mar 2011 - 14:07
>dato che aprendo la tabella non vedo quanti caratteri ci sono,
>la domanda che mi ponevo era questa:
>se scrivo 10 caratteri, lui criptandoli ne scrive sempre 10 o
>di più?
Di più, ma il data type di tale colonna/variabile dovrà essere varbinary(8000)
>e per questo la paura di sforare se definisco un campo
>dieci e lui ne scrive 11 dovrebbe poi andare in errore, e pesare
>poi anche di più a livello di bite
Il problema non si pone, leggi la precedente risposta.
>non ne ho idea, perciò ti chiedo, se andando a criptare e decriptare
>tipo 5000 caratteri se cambia la velocitàù
Certo, metti in piedi un esempietto e verifica tu stesso nel tuo ambiente quanto sia questo overhead.
>esempio una select senza criptare ci mette 1 secondo con ci mette
>1,2 secondi (è un esempio)?
>ti chiedo questo sopratutto per capire quanti campi mi conviene
>criptare, se effettivamente quelli realmente sensibili o a questo
>punto tutti
E' una scelta che devi prendere tu non solo in base ai constraint fisici, ma soprattutto a quelli legali.
>Aggiungo un altra domanda
>Ma in caso di where o where con like, funziona tutto?
L'operatore LIKE si aspetta una stringa, pertanto non potrai applicare tale operatore ad una colonna varbinary (a meno di decrittarla ma capisci bene che il piano di esecuzione della query sarà pesantemente compromesso).
>Grazie di nuovo
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
Cyberking
Profilo
| Junior Member
79
messaggi | Data Invio:
gio 24 mar 2011 - 17:44
>>dato che aprendo la tabella non vedo quanti caratteri ci sono,
>>la domanda che mi ponevo era questa:
>>se scrivo 10 caratteri, lui criptandoli ne scrive sempre 10 o
>>di più?
>Di più, ma il data type di tale colonna/variabile dovrà essere
>varbinary(8000)
>
Ok, farò un pò di test e sopratutto cercherò per il discorso del like di valutare bene cosa criptare
giusto per chiarezza mia
quindi anche se ora ho un varchar(100) lo devo convertire in varbinary(8000) per non avere problemi?
Per ora spero che sia tutto
Grazie
http://www.numero-telefono.it
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !