Avatar billede larsvn Nybegynder
20. oktober 2003 - 17:12 Der er 5 kommentarer og
1 løsning

Scramble/encrypt et varchar-felt ?

Jeg har behov for at scramble/kryptere et varchar-felt, så jeg kan sende et datasæt til en hotline-funktion.

Desværre er feltet et sekundært nøglefelt, så omformningen skal omsætte to ens nøgler til samme scramblede værdi, og to oprindeligt forskellige nøgler skal vedblive med at være forskellige efter omformningen. Altså en eksakt omformning, ikke en tilfældig.

Jeg kan umiddelbart ikke finde nogen smart indbygget funktion a la MD5 eller DES i Books Online til dette formål, så jeg er lidt på bar bund.

Det er alt-andet-lige ikke relevant at pudse en ekstern funktion på sagen, da det drejer sig om 3 tabeller med et par millioner records hver.

Og datamængden skal også helst bibeholdes, da det er vigtigt at hotline-funktionen oplever de samme performanceproblemer som jeg gør :-)

SQL-server 2000 btw.
Avatar billede arne_v Ekspert
20. oktober 2003 - 17:38 #1
Jeg kan ikke se anden praktiske mulighed end at lade et program opdatere
felterne.

Og det må jo så tage den tid det tager.
Avatar billede larsvn Nybegynder
20. oktober 2003 - 17:47 #2
Jeg kom til at tænke på Extended Stored Procedures. De implementerer jo nye funktionaliteter i MS/SQL.

Hvor svært er det at bygge den nødvendige DLL til en sådan XP ? Jeg har (kun) Borland C++ Builder til at bygge DLL med.
Avatar billede arne_v Ekspert
20. oktober 2003 - 18:04 #3
Der er en artikel her:

http://archive.devx.com/free/mgznarch/vcdj/1998/mar98/sql1.asp

(det ser ikke helt nemt ud)
Avatar billede arne_v Ekspert
20. oktober 2003 - 18:05 #4
Og jeg kan stadigvæk ikke se pointen i at lave en XP til det fremfor
bare at lade et eksetrnt program gøre det.
Avatar billede trer Nybegynder
17. november 2003 - 16:11 #5
En nem måde som giver en rimelig sikkerhed er, at benytte en XOR mekanisme med et seed som et timestamp.

Ideen er kort og godt, at du konverterer din varchar til en tilsvarende varbinary, laver et seed udfra et timestamp (f.eks. værdien i @@CPU_IDLE) og udfra dette genererer en XOR værdi for hver 4 bytes du skal have scramplet. Brug forskellige matematiske funktioner til hver XOR værdi.

Du XOR'er så din varbinary, og indsætter dit seed et kendt sted i strengen.

For de-scrampling skal du så blot trække seed'ed ud af strengen, generere de samme XOR værdier igen, og XOR's de øvrige data. Vupti; Din streng er tilbage.

Du kan så pakke din scrampler og de-scrampler ind i et par funktioner.

Minuset er selvfølgelig, at "krypteringen" ikke er specielt stærk, men man kan nu alligevel få nogle muntre timer til at gå før strengen er cracket - og performance er heller ikke fantastisk god ved lange strenge; Jeg vil nok ikke anbefale at bruge den på datamængder over 20-30 tegn.
Avatar billede larsvn Nybegynder
12. februar 2004 - 12:37 #6
Lukker spørgsmålet. Point til trer, der skal have tak for det gode forslag, som jeg dog alligevel ikke fik brug for i denne omgang. Husker det dog til senere hvis det bliver aktuelt.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester