sql >> Database teknologi >  >> RDS >> Mysql

Laravel Crypt - Sammenligning af værdier

Som beskrevet kan du ikke. Det svar, du har givet, er den måde, du ville opnå det på, hvis du ikke behøver at optimere det.

Hvis du har brug for at optimere det uden helt at kompromittere den krypterede værdi og have profileret for at finde mængden af ​​data, der returneres og behandles af dit filter, er en væsentlig årsag til forsinkelse, kan du gøre følgende.

Tilføj et nyt felt til tabellen, der vil gemme en undergruppe af en hash. Afhængigt af antallet af unikke e-mailadresser kan du indstille, hvor stort dette undersæt er. Bemærk:Mindre jo bedre, da du lækker nogle oplysninger om den krypterede værdi ved hjælp af denne tilgang. For eksempel, hvis du gemmer en 1 byte hash af e-mailadressen, reducerer du krypteringens entropi med ~8 bit.

Når du forespørger, skal du først oprette e-mail-hashens undersæt og placere en where klausul for kun at returnere disse rækker.

Alt dette forudsætter, at hash-funktionen er billigere end dekrypteringstrinnet. Denne tilgang vil kræve, at du genberegner alle hash-undersæt, hvis du ønsker at øge dens størrelse, så det er vigtigt at vælge en størrelse, der øger ydeevnen meningsfuldt, ikke unødigt kompromitterer krypteringen og højst sandsynligt ikke behøver at ændres, efterhånden som du vokser .

Bemærk:Du bør ikke bruge en straight hash som MD5 i denne situation. Ikke på grund af dets modtagelighed for kollisioner, men fordi nøglerummet vil være så lille. Hvis ydeevnen er vigtig, og du gemmer store mængder data, åbner du selv DOS-angreb, hvorved angriberen opretter store mængder af e-mailadresser, der alle hash til det samme undersæt. For at skærpe mod dette problem, brug en HMAC funktion med en hemmelig nøgle.

Husk, medmindre du har sande præstationsgrunde til at skulle tilføje kompleksitet – lad være




  1. SQL Vælg kun rækker med minimumsværdi på en kolonne med Where Condition

  2. PDO henter en kolonne fra tabel til 1-dimensionel array

  3. Python-databaseprogrammering med SQL Express for begyndere

  4. INFORMATION_SCHEMA vs sysobjects