MySQL AES_DECRYPT iv

Hàm AES_Encrypt của MySQL là một hàm mã hóa chịu trách nhiệm mã hóa một chuỗi được cung cấp dưới dạng đối số bằng cách triển khai thuật toán AES. Ở đây, AES là một dạng viết tắt của Advanced Encryption Standard, khi được áp dụng với chức năng mã hóa sẽ giúp mã hóa dữ liệu bằng cách sử dụng khóa có độ dài 128 bit và độ dài khóa này có thể được kéo dài lên tới 256 bit. Hàm MySQL AES_Encrypt() thực hiện để mã hóa bất kỳ chuỗi cụ thể nào và tạo ra một chuỗi nhị phân. Nếu đối số được cung cấp cho hàm là NULL, thì đầu ra cũng sẽ là NULL

Người dùng của chúng tôi cung cấp độ dài khóa quá nhỏ thì nó có thể được đệm rỗng. e. do bộ nhớ, nhưng nếu nó quá lớn thì nó có thể xor các byte bổ sung bằng cách sử dụng các byte key_size đầu tiên, giả sử khi kích thước khóa sẽ là 4byte cùng với khóa là 12345678, thì nó sẽ được xor thành 5678 khi sử dụng kết quả là . Do đó, để bảo mật tốt nhất, chúng tôi phải triển khai độ dài khóa ngẫu nhiên có kích thước được định cấu hình AES sẽ sử dụng. Do đó, đối với AES-128 được cung cấp, chúng tôi cần 128 bit làm khóa ngẫu nhiên hoặc nói 32 ký tự hex

Bắt đầu khóa học khoa học dữ liệu miễn phí của bạn

Hadoop, Khoa học dữ liệu, Thống kê và những thứ khác

Gói khoa học dữ liệu tất cả trong một(360+ khóa học, hơn 50 dự án)

MySQL AES_DECRYPT iv
MySQL AES_DECRYPT iv
MySQL AES_DECRYPT iv
MySQL AES_DECRYPT iv

MySQL AES_DECRYPT iv
MySQL AES_DECRYPT iv
MySQL AES_DECRYPT iv
MySQL AES_DECRYPT iv

Giá
Xem khóa học

360+ Khóa học trực tuyến. hơn 50 dự án. Hơn 1500 giờ. Giấy chứng nhận có thể kiểm chứng. Truy cập Trọn đời
4. 7 (83.902 xếp hạng)

Cú pháp của MySQL AES_Encrypt

Cú pháp của hàm MySQL AES_ENCRYPT() được giải thích như sau

AES_ENCRYPT (Encryp_String, Key_String);

Các đối số được đề cập ở trên trong hàm có tên là Encryp_String và Key_String được mô tả bên dưới

  • mã hóa_String. Đây là chuỗi được cung cấp sẽ được mã hóa
  • Key_String. Đây là chuỗi khóa để mã hóa chuỗi đối số đầu tiên

Các đối số đầu vào này có thể có độ dài bất kỳ. Nếu bất kỳ đối số nào trong số này được cung cấp là NULL, thì kết quả của hàm này sẽ là NULL. Bởi vì AES được cho là thuật toán cấp khối trong đó phần đệm được triển khai để mã hóa độ dài chuỗi không đều để có thể xem xét chuỗi độ dài kết quả bằng công thức sau

16 * (trunc(str_len/16) + 1);               //str_len denotes the string length

AES có thể được định nghĩa là mã hóa hai chiều cũng như cơ chế giải mã mang lại một lớp an toàn cho các bản ghi dữ liệu nhạy cảm trong khi âm thầm cho phép thu hồi dữ liệu sáng tạo. Đối với điều này, một khóa mã hóa được áp dụng làm hạt giống được cung cấp trong thuật toán AES. AES thực hiện một thuật toán toán học tổng hợp bao gồm hai khái niệm như nhầm lẫn và khuếch tán khác. Ở đây, quá trình nhầm lẫn giúp che giấu mối quan hệ của dữ liệu gốc và kết quả dữ liệu được mã hóa trong khi quá trình Khuếch tán có chức năng thay đổi, thay đổi hoặc điều chỉnh dữ liệu theo cách tổng hợp

Hàm AES_ENCRYPT() trong MySQL khi thực thi sẽ trả về giá trị là một chuỗi nhị phân sau khi chuyển đổi bản rõ ban đầu. Chức năng MySQL AES_ENCRYPT() này được hỗ trợ cho các phiên bản MySQL như MySQL 5. 7, 5. 6, 5. 5, 5. 1, 5. 0, 4. 1

Chức năng AES_ENCRYPT hoạt động như thế nào trong MySQL?

Hàm AES_ENCRYPT() trong MySQL áp dụng mã hóa các bản ghi dữ liệu bằng cách sử dụng thuật toán AES chính thức, trước đây được công nhận là 'Rijndael', trong đó tiêu chuẩn AES cho phép một số độ dài khóa. Giá trị mặc định là 128 bit nhưng như đã mô tả, 196 và 256 bit cũng có thể được triển khai, trong đó độ dài khóa được cho là sự đánh đổi giữa an toàn và hiệu suất

Hãy để chúng tôi xem ví dụ mã để hiển thị hoạt động của hàm AES_Encrypt() như bên dưới

SELECT AES_Encrypt(‘mysqlcoding’,’mysqlkeystring’);

Ở đây, câu lệnh truy vấn MySQL ở trên mã hóa chuỗi được chỉ định như 'mysqlcoding' với khóa mysqlkeystring. Đầu ra cho điều này sẽ như sau khi thực hiện

AES_Encrypt() cho phép điều chỉnh chế độ mã hóa khối và sẽ nhận init_vector làm đối số vectơ khởi tạo tùy chọn trong đó

  • Biến hệ thống block_encryption_mode này chi phối chế độ cho các thuật toán mã hóa dựa trên khối của máy chủ có giá trị là aes-128-ecb theo mặc định, cho biết mã hóa sử dụng độ dài khóa có 128 bit và chế độ ECB
  • Đối số tùy chọn init_vector cung cấp một vectơ khởi tạo cho các chế độ mã hóa khối này cần nó

Đối với các chế độ cần đối số init_vector, nó phải là 16 byte hoặc dài hơn trong đó các byte vượt quá 16 không được chú ý. Nhưng sẽ xảy ra lỗi nếu thiếu init_vector. Vì vậy, chúng ta có thể viết như sau

SELECT AES_ENCRYPT (Encryp_String, Key_String, @init_vector);

Nhưng đối với các chế độ không cần đối số tùy chọn init_vector, nó sẽ bị bỏ qua và một cảnh báo liên quan được tạo ra nếu nó được nêu

Ngoài ra, để sử dụng với vectơ khởi tạo, bất kỳ chuỗi byte ngẫu nhiên nào cũng có thể được tạo bằng cách gọi hàm RANDOM_BYTES(16). Do đó, đối với các chế độ mã hóa cần một vectơ khởi tạo, thì vectơ tương tự sẽ được triển khai để mã hóa và giải mã bất kỳ chuỗi nào

Hãy để chúng tôi thảo luận và giải thích danh sách bảng trong đó mỗi bảng là chế độ mã hóa khối được phép với đối số vectơ khởi tạo được liên kết cần thiết

Chế độ mã hóa khối Cần có vectơ khởi tạoECBKhôngCBCCóCFB1CóCFB8CóCFB128CóOFBCó

Cần lưu ý rằng các câu lệnh triển khai MySQL AES_Encrypt() hoặc AES_Decrypt() không an toàn đối với việc sao chép dựa trên câu lệnh

Ví dụ về MySQL AES_Encrypt

Hãy để chúng tôi minh họa một số ví dụ để hiển thị chức năng MySQL AES_Encrypt() hoạt động như sau

1. Thực thi hàm AES_Encrypt() trên một chuỗi bằng câu lệnh SELECT

SELECT AES_ENCRYPT('XYZ','key');

Câu lệnh SELECT được sử dụng với MySQL AES_Encrypt() để tìm kết quả và mã hóa chuỗi trong máy chủ MySQL

đầu ra

MySQL AES_DECRYPT iv

2. Thực thi hàm AES_Encrypt() trên chuỗi lớn hơn bằng câu lệnh SELECT

SELECT AES_ENCRYPT('MySQLdatabasefunction','key');

đầu ra

MySQL AES_DECRYPT iv

3. Thực thi hàm AES_Encrypt() trên chuỗi NULL bằng câu lệnh SELECT

SELECT AES_ENCRYPT(NULL,'key');

đầu ra

MySQL AES_DECRYPT iv

4. Thực thi hàm AES_Encrypt() triển khai bảng mẫu trong cơ sở dữ liệu

INSERT INTO demo VALUE (AES_ENCRYPT('mystring','key'));

Nếu đã giải thích truy vấn trên, hàm sẽ mã hóa chuỗi mystring cụ thể bằng khóa và nhập chuỗi được mã hóa dưới dạng đầu ra vào bảng 'demo'

5. Thực thi hàm AES_ENCRYPT() với giá trị khóa

________số 8

đầu ra

MySQL AES_DECRYPT iv

Ở đây, giá trị khóa là Google và chuỗi cần mã hóa là All is Well trong các đối số của hàm AES_Encrypt()

Phần kết luận

  • Hàm AES_ENCRYPT() của MySQL được xác định là không an toàn vì nó thực hiện chế độ ECB theo mặc định trừ khi được định cấu hình theo cách khác
  • Tùy thuộc vào block_encryption_mode của máy chủ mà người dùng định cấu hình, chúng tôi có thể sử dụng độ dài khóa từ danh sách các khóa được hỗ trợ, chẳng hạn như 128, 256 và 192 trong đó các độ dài khóa này cũng được thuật toán tiêu chuẩn AES cho phép

Bài viết được đề xuất

Đây là hướng dẫn về MySQL AES_Encrypt. Ở đây chúng ta cũng thảo luận về định nghĩa và cú pháp của MySQL AES_Encrypt cùng với các ví dụ khác nhau và cách triển khai mã của nó. Bạn cũng có thể xem các bài viết sau để tìm hiểu thêm –

Làm cách nào để giải mã mã hóa AES trong MySQL?

Hàm MySQL AES_DECRYPT trả về chuỗi gốc sau khi giải mã chuỗi được mã hóa. Nó sử dụng thuật toán AES (Advanced Encryption Standard) để thực hiện giải mã. Hàm AES_DECRYPT trả về chuỗi đã giải mã hoặc NULL nếu phát hiện dữ liệu không hợp lệ

Làm cách nào để giải mã giá trị cột trong MySQL?

Hàm DES_DECRYPT của MySQL được sử dụng để giải mã chuỗi được mã hóa bằng thuật toán DES (Chuẩn mã hóa dữ liệu). Hàm MySQL DES_DECRYPT sử dụng khóa để giải mã chuỗi. Giá trị được trả về bởi hàm DES_DECRYPT là một chuỗi được giải mã hoặc NULL.

Làm cách nào để chèn dữ liệu được mã hóa trong MySQL?

Để kích hoạt mã hóa cho vùng bảng hệ thống mysql, chỉ định tên vùng bảng và tùy chọn ENCRYPTION trong câu lệnh ALTER TABLESPACE . mysql> THAY ĐỔI TABLESPACE mysql ENCRYPTION = 'Y'; .

Làm cách nào để tìm kiếm dữ liệu được mã hóa trong MySQL?

truy xuất TẤT CẢ các bản ghi CHỈ cho trường bạn đang tìm kiếm với id bản ghi
giải mã chúng thành một bảng tạm thời
thực hiện tìm kiếm đối với bảng đó
sử dụng id để truy xuất toàn bộ bản ghi (tất cả các trường) khớp với tiêu chí tìm kiếm
giải mã chúng và trả lại cho người dùng