Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Laravel Crypt - So sánh các giá trị

Như đã mô tả, bạn không thể. Câu trả lời bạn đã đưa ra là cách bạn sẽ đạt được nó nếu bạn không cần tối ưu hóa nó.

Nếu bạn cần tối ưu hóa nó mà không hoàn toàn làm ảnh hưởng đến giá trị được mã hóa và đã lập hồ sơ để tìm lượng dữ liệu được bộ lọc của bạn trả về và xử lý là nguyên nhân chính gây ra sự chậm trễ, bạn có thể làm như sau.

Thêm một trường mới vào bảng sẽ lưu trữ một tập hợp con của một hàm băm. Tùy thuộc vào số lượng địa chỉ email duy nhất, bạn có thể điều chỉnh mức độ lớn của tập hợp con này. Lưu ý:Càng nhỏ càng tốt, vì bạn đang làm rò rỉ một số thông tin về giá trị được mã hóa bằng cách sử dụng phương pháp này. Ví dụ:nếu bạn lưu trữ 1 byte băm của địa chỉ email, bạn đang giảm entropy của mã hóa đi ~ 8 bit.

Khi bạn truy vấn, trước tiên hãy tạo tập hợp con của hàm băm email và đặt where mệnh đề chỉ trả về những hàng đó.

Tất cả điều này giả định rằng hàm băm rẻ hơn bước giải mã. Cách tiếp cận này sẽ yêu cầu bạn tính toán lại tất cả các tập con băm nếu bạn muốn tăng kích thước của nó, vì vậy việc chọn kích thước giúp tăng hiệu suất một cách có ý nghĩa, không ảnh hưởng quá mức đến việc mã hóa và rất có thể sẽ không cần thay đổi khi bạn lớn lên là điều quan trọng .

Lưu ý:Bạn không nên sử dụng hàm băm thẳng như MD5 trong trường hợp này. Không phải vì nó dễ bị va chạm, mà bởi vì không gian phím sẽ rất nhỏ. Nếu hiệu suất là quan trọng và bạn lưu trữ một lượng lớn dữ liệu, bạn sẽ tự mở các cuộc tấn công DOS, theo đó kẻ tấn công tạo ra một lượng lớn địa chỉ email mà tất cả đều băm thành cùng một tập hợp con. Để khắc phục sự cố này, hãy sử dụng HMAC chức năng với một khóa bí mật.

Hãy nhớ rằng, trừ khi bạn có lý do thực sự về hiệu suất để cần thêm sự phức tạp - đừng




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách chọn Giá trị cột làm Tên cột với các điều kiện trong bảng SQL

  2. Cách tạo API đồ thị không máy chủ cho MySQL, Postgres và Aurora

  3. Làm thế nào để chuyển đổi mssql script sang mysql

  4. Cách tối ưu hóa các truy vấn khung thực thể

  5. Làm thế nào để vô hiệu hóa innodb trong mysql?