sql >> Databáze >  >> RDS >> Mysql

Laravel Crypt - Porovnání hodnot

Jak je popsáno, nemůžete. Odpověď, kterou jste uvedl, je způsob, jakým byste toho dosáhli, pokud to nepotřebujete optimalizovat.

Pokud jej potřebujete optimalizovat bez úplně ohrožení zašifrované hodnoty a vytvoření profilu pro zjištění množství dat vrácených a zpracovaných vaším filtrem je hlavní příčinou zpoždění, můžete provést následující.

Přidejte do tabulky nové pole, které bude ukládat podmnožinu hash. V závislosti na počtu jedinečných e-mailových adres můžete nastavit, jak velká je tato podmnožina. Poznámka:Čím menší, tím lepší, protože pomocí tohoto přístupu unikají některé informace o zašifrované hodnotě. Pokud například uložíte 1 byte hash e-mailové adresy, snížíte entropii šifrování o ~8 bitů.

Při dotazu nejprve vytvořte podmnožinu hash e-mailu a vložte where klauzule vrátit pouze tyto řádky.

To vše předpokládá, že hashovací funkce je levnější než dešifrovací krok. Tento přístup by vyžadoval, abyste přepočítali všechny podmnožiny hash, pokud byste chtěli zvětšit jejich velikost, takže je důležité vybrat velikost, která smysluplně zvyšuje výkon, neohrožuje zbytečně šifrování a s největší pravděpodobností nebude nutné měnit, jak budete růst. .

Poznámka:V této situaci byste neměli používat rovný hash jako MD5. Ne kvůli jeho náchylnosti ke kolizím, ale proto, že klíčový prostor bude tak malý. Pokud je důležitý výkon a ukládáte velké množství dat, otevíráte se útokům DOS, kdy útočník vytváří velké množství e-mailových adres, které všechny hashujete do stejné podmnožiny. Chcete-li se tomuto problému bránit, použijte HMAC funkce s tajným klíčem.

Pamatujte si, že pokud nemáte skutečné důvody pro zvýšení výkonu, nedělejte to




  1. Jak vložit datum a čas s přesností na mikrosekundu do mysql?

  2. Integrace obrazu s jQuery AutoComplete

  3. Jak znovu vytvořit smazanou tabulku pomocí Django Migrations?

  4. Přidávání dat do databáze MySQL z formuláře HTML