Hướng dẫn how do i decrypt a column in mysql? - làm cách nào để giải mã một cột trong mysql?

Giải pháp cho trong MySQL Workbench là chuyển đổi tùy chọn sau cho Trình chỉnh sửa SQL: "Hãy coi nhị phân/varbinary là chuỗi ký tự không phải là chuỗi." Ít nhất trên MacOS X, bạn sẽ cần khởi động lại Workbench để có hiệu lực. (Bạn cũng có thể nhấp chuột phải vào giá trị và thực hiện 'giá trị mở trong trình xem').

Nếu bạn không muốn thay đổi các tùy chọn trong Workbench, bạn có thể sử dụng hàm Cast () để trả về kết quả của AES_Decrypt () làm chuỗi:

SELECT fld_user, fld_pwd, CAST(AES_DECRYPT(fld_encryptedpwd, 'key') AS CHAR)
FROM users WHERE fld_id='1903';

Một thủ thuật để kiểm tra/đảm bảo rằng chức năng loại dữ liệu nào sẽ quay lại là thực hiện các cách sau đây bằng cách sử dụng MySQL CLI:

mysql> CREATE TALBE tmp1 AS SELECT AES_DECRYPT(fld_encryptedpwd, 'key')
       FROM users WHERE fld_id='1903';
mysql> DESC tmp1;

Điều đó sẽ hiển thị loại dữ liệu nào sẽ được trả về.

(Một lần nữa, lưu trữ mật khẩu được mã hóa: Không tốt lắm.)

Nhiều hàm mã hóa và nén trả về các chuỗi mà kết quả có thể chứa các giá trị byte tùy ý. Nếu bạn muốn lưu trữ các kết quả này, hãy sử dụng một cột có kiểu dữ liệu chuỗi nhị phân

mysql> CREATE TALBE tmp1 AS SELECT AES_DECRYPT(fld_encryptedpwd, 'key')
       FROM users WHERE fld_id='1903';
mysql> DESC tmp1;
8 hoặc
mysql> CREATE TALBE tmp1 AS SELECT AES_DECRYPT(fld_encryptedpwd, 'key')
       FROM users WHERE fld_id='1903';
mysql> DESC tmp1;
9. Điều này tránh các vấn đề tiềm ẩn với việc loại bỏ không gian theo dõi hoặc chuyển đổi bộ ký tự sẽ thay đổi giá trị dữ liệu, chẳng hạn như có thể xảy ra nếu bạn sử dụng kiểu dữ liệu chuỗi không phân biệt (
CREATE TABLE md5_tbl (md5_val CHAR(32), ...);
INSERT INTO md5_tbl (md5_val, ...) VALUES(MD5('abcdef'), ...);
0,
CREATE TABLE md5_tbl (md5_val CHAR(32), ...);
INSERT INTO md5_tbl (md5_val, ...) VALUES(MD5('abcdef'), ...);
1,
CREATE TABLE md5_tbl (md5_val CHAR(32), ...);
INSERT INTO md5_tbl (md5_val, ...) VALUES(MD5('abcdef'), ...);
2).

Một số hàm mã hóa trả về chuỗi của các ký tự ASCII:

CREATE TABLE md5_tbl (md5_val CHAR(32), ...);
INSERT INTO md5_tbl (md5_val, ...) VALUES(MD5('abcdef'), ...);
3,
CREATE TABLE md5_tbl (md5_val CHAR(32), ...);
INSERT INTO md5_tbl (md5_val, ...) VALUES(MD5('abcdef'), ...);
4,
CREATE TABLE md5_tbl (md5_val CHAR(32), ...);
INSERT INTO md5_tbl (md5_val, ...) VALUES(MD5('abcdef'), ...);
5,
CREATE TABLE md5_tbl (md5_val CHAR(32), ...);
INSERT INTO md5_tbl (md5_val, ...) VALUES(MD5('abcdef'), ...);
6,
CREATE TABLE md5_tbl (md5_val CHAR(32), ...);
INSERT INTO md5_tbl (md5_val, ...) VALUES(MD5('abcdef'), ...);
7,
CREATE TABLE md5_tbl (md5_val CHAR(32), ...);
INSERT INTO md5_tbl (md5_val, ...) VALUES(MD5('abcdef'), ...);
8. Giá trị trả về của chúng là một chuỗi có bộ ký tự và đối chiếu được xác định bởi các biến hệ thống
CREATE TABLE md5_tbl (md5_val CHAR(32), ...);
INSERT INTO md5_tbl (md5_val, ...) VALUES(MD5('abcdef'), ...);
9 và
CREATE TABLE md5_tbl (md5_val BINARY(16), ...);
INSERT INTO md5_tbl (md5_val, ...) VALUES(UNHEX(MD5('abcdef')), ...);
0. Đây là một chuỗi không phân biệt trừ khi bộ ký tự là
CREATE TABLE md5_tbl (md5_val BINARY(16), ...);
INSERT INTO md5_tbl (md5_val, ...) VALUES(UNHEX(MD5('abcdef')), ...);
1.

Nếu một ứng dụng lưu trữ các giá trị từ một hàm như

CREATE TABLE md5_tbl (md5_val CHAR(32), ...);
INSERT INTO md5_tbl (md5_val, ...) VALUES(MD5('abcdef'), ...);
3 hoặc
CREATE TABLE md5_tbl (md5_val CHAR(32), ...);
INSERT INTO md5_tbl (md5_val, ...) VALUES(MD5('abcdef'), ...);
5 trả về một chuỗi các chữ số hex, có thể thu được lưu trữ và so sánh hiệu quả hơn bằng cách chuyển đổi biểu diễn HEX thành nhị phân bằng cách sử dụng
CREATE TABLE md5_tbl (md5_val BINARY(16), ...);
INSERT INTO md5_tbl (md5_val, ...) VALUES(UNHEX(MD5('abcdef')), ...);
4 và lưu trữ kết quả trong cột
CREATE TABLE md5_tbl (md5_val BINARY(16), ...);
INSERT INTO md5_tbl (md5_val, ...) VALUES(UNHEX(MD5('abcdef')), ...);
5). Mỗi cặp chữ số thập lục phân yêu cầu một byte ở dạng nhị phân, do đó, giá trị của
CREATE TABLE md5_tbl (md5_val BINARY(16), ...);
INSERT INTO md5_tbl (md5_val, ...) VALUES(UNHEX(MD5('abcdef')), ...);
6 phụ thuộc vào độ dài của chuỗi HEX.
CREATE TABLE md5_tbl (md5_val BINARY(16), ...);
INSERT INTO md5_tbl (md5_val, ...) VALUES(UNHEX(MD5('abcdef')), ...);
6 là 16 cho giá trị
CREATE TABLE md5_tbl (md5_val CHAR(32), ...);
INSERT INTO md5_tbl (md5_val, ...) VALUES(MD5('abcdef'), ...);
3 và 20 cho giá trị
CREATE TABLE md5_tbl (md5_val CHAR(32), ...);
INSERT INTO md5_tbl (md5_val, ...) VALUES(MD5('abcdef'), ...);
5. Đối với
CREATE TABLE md5_tbl (md5_val CHAR(32), ...);
INSERT INTO md5_tbl (md5_val, ...) VALUES(MD5('abcdef'), ...);
6,
CREATE TABLE md5_tbl (md5_val BINARY(16), ...);
INSERT INTO md5_tbl (md5_val, ...) VALUES(UNHEX(MD5('abcdef')), ...);
6 dao động từ 28 đến 32 tùy thuộc vào đối số chỉ định độ dài bit mong muốn của kết quả.

Hình phạt kích thước để lưu trữ chuỗi HEX trong cột

CREATE TABLE md5_tbl (md5_val CHAR(32), ...);
INSERT INTO md5_tbl (md5_val, ...) VALUES(MD5('abcdef'), ...);
0 ít nhất hai lần, lên đến tám lần nếu giá trị được lưu trữ trong một cột sử dụng bộ ký tự
16 * (trunc(string_length / 16) + 1)
3 (trong đó mỗi ký tự sử dụng 4 byte). Lưu trữ chuỗi cũng dẫn đến so sánh chậm hơn vì các giá trị lớn hơn và cần tính đến các quy tắc đối chiếu tập hợp nhân vật.

Giả sử rằng một ứng dụng lưu trữ các giá trị chuỗi

CREATE TABLE md5_tbl (md5_val CHAR(32), ...);
INSERT INTO md5_tbl (md5_val, ...) VALUES(MD5('abcdef'), ...);
3 trong cột
16 * (trunc(string_length / 16) + 1)
5:

CREATE TABLE md5_tbl (md5_val CHAR(32), ...);
INSERT INTO md5_tbl (md5_val, ...) VALUES(MD5('abcdef'), ...);

Để chuyển đổi chuỗi HEX thành dạng nhỏ gọn hơn, thay vào đó, hãy sửa đổi ứng dụng để sử dụng

CREATE TABLE md5_tbl (md5_val BINARY(16), ...);
INSERT INTO md5_tbl (md5_val, ...) VALUES(UNHEX(MD5('abcdef')), ...);
4 và
16 * (trunc(string_length / 16) + 1)
7 như sau:

CREATE TABLE md5_tbl (md5_val BINARY(16), ...);
INSERT INTO md5_tbl (md5_val, ...) VALUES(UNHEX(MD5('abcdef')), ...);

Các ứng dụng nên được chuẩn bị để xử lý trường hợp rất hiếm khi hàm băm tạo ra cùng một giá trị cho hai giá trị đầu vào khác nhau. Một cách để làm cho các vụ va chạm có thể phát hiện được là biến cột Hash thành một khóa chính.

Ghi chú

Khai thác cho các thuật toán MD5 và SHA-1 đã được biết đến. Bạn có thể muốn xem xét sử dụng một chức năng mã hóa một chiều khác được mô tả trong phần này, chẳng hạn như

CREATE TABLE md5_tbl (md5_val CHAR(32), ...);
INSERT INTO md5_tbl (md5_val, ...) VALUES(MD5('abcdef'), ...);
6.

Thận trọng

Mật khẩu hoặc các giá trị nhạy cảm khác được cung cấp dưới dạng đối số cho các hàm mã hóa được gửi dưới dạng ClearText đến máy chủ MySQL trừ khi sử dụng kết nối SSL. Ngoài ra, các giá trị như vậy xuất hiện trong bất kỳ nhật ký MySQL nào mà chúng được viết. Để tránh các loại phơi sáng này, các ứng dụng có thể mã hóa các giá trị nhạy cảm ở phía máy khách trước khi gửi chúng đến máy chủ. Những cân nhắc tương tự áp dụng cho các khóa mã hóa. Để tránh phơi bày những thứ này, các ứng dụng có thể sử dụng các quy trình được lưu trữ để mã hóa và giải mã các giá trị ở phía máy chủ.

  • ________ 49, ________ 50 [, ________ 51] [, ________ 52] [, ________ 53] [, ________ 54])

    Hàm này giải mã dữ liệu bằng thuật toán AES chính thức (Tiêu chuẩn mã hóa nâng cao). Để biết thêm thông tin, xem mô tả của

    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text',UNHEX('F3229A0B371ED2D9441B830D21A390C3')));
    5.

    Các tuyên bố sử dụng

    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text',UNHEX('F3229A0B371ED2D9441B830D21A390C3')));
    6 không an toàn cho sao chép dựa trên tuyên bố.

  • ________ 57, ________ 50 [, ________ 51] [, ________ 52] [, ________ 53] [, ________ 54])

    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text',UNHEX('F3229A0B371ED2D9441B830D21A390C3')));
    5 và
    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text',UNHEX('F3229A0B371ED2D9441B830D21A390C3')));
    6 Thực hiện mã hóa và giải mã dữ liệu bằng thuật toán AES (Tiêu chuẩn mã hóa nâng cao) chính thức, trước đây được gọi là Rijndael. Tiêu chuẩn AES cho phép các độ dài khóa khác nhau. Theo mặc định, các chức năng này thực hiện AES với độ dài khóa 128 bit. Độ dài chính của 196 hoặc 256 bit có thể được sử dụng, như được mô tả sau. Độ dài chính là sự đánh đổi giữa hiệu suất và bảo mật.Rijndael. The AES standard permits various key lengths. By default these functions implement AES with a 128-bit key length. Key lengths of 196 or 256 bits can be used, as described later. The key length is a trade off between performance and security.

    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text',UNHEX('F3229A0B371ED2D9441B830D21A390C3')));
    5 mã hóa chuỗi
    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text', UNHEX(SHA2('My secret passphrase',512))));
    6 bằng cách sử dụng chuỗi khóa
    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text',UNHEX('F3229A0B371ED2D9441B830D21A390C3')));
    0 và trả về một chuỗi nhị phân chứa đầu ra được mã hóa.
    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text',UNHEX('F3229A0B371ED2D9441B830D21A390C3')));
    6 giải mã chuỗi được mã hóa
    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text', UNHEX(SHA2('My secret passphrase',512))));
    9 bằng cách sử dụng chuỗi khóa
    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text',UNHEX('F3229A0B371ED2D9441B830D21A390C3')));
    0 và trả về chuỗi văn bản gốc. Nếu một trong hai đối số hàm là
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');
    1, hàm trả về
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');
    1. Nếu
    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text',UNHEX('F3229A0B371ED2D9441B830D21A390C3')));
    6 phát hiện dữ liệu không hợp lệ hoặc đệm không chính xác, nó sẽ trả về
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');
    1. Tuy nhiên,
    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text',UNHEX('F3229A0B371ED2D9441B830D21A390C3')));
    6 có thể trả về giá trị không phải là -____ 71 (có thể là rác) nếu dữ liệu đầu vào hoặc khóa không hợp lệ.

    Từ MySQL 8.0.30, các chức năng hỗ trợ việc sử dụng hàm dẫn xuất khóa (KDF) để tạo khóa bí mật mạnh về mặt mật mã từ thông tin được truyền trong

    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text',UNHEX('F3229A0B371ED2D9441B830D21A390C3')));
    0. Khóa dẫn xuất được sử dụng để mã hóa và giải mã dữ liệu và nó vẫn còn trong phiên bản MYSQL Server và không thể truy cập được cho người dùng. Sử dụng KDF rất được khuyến khích, vì nó cung cấp bảo mật tốt hơn so với việc chỉ định khóa trước của riêng bạn hoặc lấy nó bằng một phương thức đơn giản hơn khi bạn sử dụng chức năng. Các chức năng hỗ trợ HKDF (có sẵn từ OpenSSL 1.1.0), mà bạn có thể chỉ định một thông tin cụ thể về muối và ngữ cảnh tùy chọn để đưa vào tài liệu khóa và PBKDF2 (có sẵn từ OpenSSL 1.0.2), bạn có thể chỉ định một Muối tùy chọn và đặt số lần lặp được sử dụng để sản xuất chìa khóa.

    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text',UNHEX('F3229A0B371ED2D9441B830D21A390C3')));
    5 và
    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text',UNHEX('F3229A0B371ED2D9441B830D21A390C3')));
    6 cho phép kiểm soát chế độ mã hóa khối. Biến hệ thống
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'pbkdf2_hmac','salt', '2000');
    0 kiểm soát chế độ cho các thuật toán mã hóa dựa trên khối. Giá trị mặc định của nó là
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'pbkdf2_hmac','salt', '2000');
    1, biểu thị mã hóa bằng cách sử dụng chiều dài khóa là 128 bit và chế độ ECB. Để biết mô tả về các giá trị được phép của biến này, xem Phần & NBSP; 5.1.8, các biến hệ thống máy chủ của Hồi giáo. Đối số
    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text',UNHEX('F3229A0B371ED2D9441B830D21A390C3')));
    1 tùy chọn được sử dụng để cung cấp một vectơ khởi tạo cho các chế độ mã hóa khối yêu cầu nó.

    Các tuyên bố sử dụng

    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text',UNHEX('F3229A0B371ED2D9441B830D21A390C3')));
    5 hoặc
    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text',UNHEX('F3229A0B371ED2D9441B830D21A390C3')));
    6 không an toàn cho sao chép dựa trên tuyên bố.

    Nếu

    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text',UNHEX('F3229A0B371ED2D9441B830D21A390C3')));
    5 được gọi từ bên trong máy khách MySQL, thì chuỗi nhị phân hiển thị bằng cách sử dụng ký hiệu thập lục phân, tùy thuộc vào giá trị của
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'pbkdf2_hmac','salt', '2000');
    6. Để biết thêm thông tin về tùy chọn đó, hãy xem Phần & NBSP; 4.5.1, MYSQL-Máy khách dòng lệnh MySQL.mysql client, binary strings display using hexadecimal notation, depending on the value of the
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'pbkdf2_hmac','salt', '2000');
    6. For more information about that option, see Section 4.5.1, “mysql — The MySQL Command-Line Client”.

    Các đối số cho các hàm

    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text',UNHEX('F3229A0B371ED2D9441B830D21A390C3')));
    5 và
    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text',UNHEX('F3229A0B371ED2D9441B830D21A390C3')));
    6 như sau:

    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text', UNHEX(SHA2('My secret passphrase',512))));
    6

    Chuỗi cho

    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text',UNHEX('F3229A0B371ED2D9441B830D21A390C3')));
    5 để mã hóa bằng cách sử dụng chuỗi khóa
    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text',UNHEX('F3229A0B371ED2D9441B830D21A390C3')));
    0 hoặc (từ MySQL 8.0.30) Khóa có nguồn gốc từ nó bởi KDF được chỉ định. Chuỗi có thể là bất kỳ độ dài. Đệm được tự động thêm vào
    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text', UNHEX(SHA2('My secret passphrase',512))));
    6 vì vậy nó là bội số của một khối theo yêu cầu của các thuật toán dựa trên khối như AES. Phần đệm này được tự động xóa bởi hàm
    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text',UNHEX('F3229A0B371ED2D9441B830D21A390C3')));
    6.

    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text', UNHEX(SHA2('My secret passphrase',512))));
    9

    Chuỗi được mã hóa cho

    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text',UNHEX('F3229A0B371ED2D9441B830D21A390C3')));
    6 để giải mã bằng cách sử dụng chuỗi khóa
    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text',UNHEX('F3229A0B371ED2D9441B830D21A390C3')));
    0 hoặc (từ MySQL 8.0.30) Khóa bắt nguồn từ nó bởi KDF được chỉ định. Chuỗi có thể là bất kỳ độ dài. Độ dài của
    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text', UNHEX(SHA2('My secret passphrase',512))));
    9 có thể được tính từ chiều dài của chuỗi ban đầu bằng công thức này:

    16 * (trunc(string_length / 16) + 1)
    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text',UNHEX('F3229A0B371ED2D9441B830D21A390C3')));
    0
    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text',UNHEX('F3229A0B371ED2D9441B830D21A390C3')));
    0

    Phím mã hóa hoặc vật liệu khóa đầu vào được sử dụng làm cơ sở để lấy khóa sử dụng hàm dẫn xuất khóa (KDF). Đối với cùng một trường hợp dữ liệu, sử dụng cùng một giá trị

    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text',UNHEX('F3229A0B371ED2D9441B830D21A390C3')));
    0 để mã hóa với
    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text',UNHEX('F3229A0B371ED2D9441B830D21A390C3')));
    5 và giải mã với
    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text',UNHEX('F3229A0B371ED2D9441B830D21A390C3')));
    6.

    Nếu bạn đang sử dụng KDF, mà bạn có thể từ MySQL 8.0.30,

    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text',UNHEX('F3229A0B371ED2D9441B830D21A390C3')));
    0 có thể là bất kỳ thông tin tùy ý nào như mật khẩu hoặc cụm mật khẩu. Trong các đối số tiếp theo cho hàm, bạn chỉ định tên KDF, sau đó thêm các tùy chọn tiếp theo để tăng bảo mật khi thích hợp cho KDF.

    Khi bạn sử dụng KDF, chức năng sẽ tạo một khóa bí mật mạnh về mặt mật mã từ thông tin được truyền trong

    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text',UNHEX('F3229A0B371ED2D9441B830D21A390C3')));
    0 và bất kỳ muối hoặc thông tin bổ sung nào bạn cung cấp trong các đối số khác. Khóa dẫn xuất được sử dụng để mã hóa và giải mã dữ liệu và nó vẫn còn trong phiên bản MYSQL Server và không thể truy cập được cho người dùng. Sử dụng KDF rất được khuyến khích, vì nó cung cấp bảo mật tốt hơn so với việc chỉ định khóa trước của riêng bạn hoặc lấy nó bằng một phương thức đơn giản hơn khi bạn sử dụng chức năng.

    Nếu bạn không sử dụng KDF, với độ dài khóa 128 bit, cách an toàn nhất để chuyển khóa cho đối số

    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text',UNHEX('F3229A0B371ED2D9441B830D21A390C3')));
    0 là tạo ra giá trị 128 bit thực sự ngẫu nhiên và chuyển nó dưới dạng giá trị nhị phân. Ví dụ:

    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text',UNHEX('F3229A0B371ED2D9441B830D21A390C3')));

    Một cụm mật khẩu có thể được sử dụng để tạo khóa AES bằng cách băm cụm mật khẩu. Ví dụ:

    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text', UNHEX(SHA2('My secret passphrase',512))));

    Nếu bạn vượt quá độ dài khóa tối đa là 128 bit, một cảnh báo sẽ được trả về. Nếu bạn không sử dụng KDF, không truyền mật khẩu hoặc cụm mật khẩu trực tiếp cho

    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text',UNHEX('F3229A0B371ED2D9441B830D21A390C3')));
    0, băm nó trước. Các phiên bản trước của tài liệu này cho thấy phương pháp trước đây, nhưng nó không còn được khuyến nghị vì các ví dụ được hiển thị ở đây an toàn hơn.

    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text',UNHEX('F3229A0B371ED2D9441B830D21A390C3')));
    1

    Một vectơ khởi tạo, cho các chế độ mã hóa khối yêu cầu nó. Biến hệ thống

    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'pbkdf2_hmac','salt', '2000');
    0 kiểm soát chế độ. Đối với cùng một trường hợp dữ liệu, sử dụng cùng một giá trị
    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text',UNHEX('F3229A0B371ED2D9441B830D21A390C3')));
    1 để mã hóa với
    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text',UNHEX('F3229A0B371ED2D9441B830D21A390C3')));
    5 và giải mã với
    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text',UNHEX('F3229A0B371ED2D9441B830D21A390C3')));
    6.

    Ghi chú

    Nếu bạn đang sử dụng KDF, bạn phải chỉ định một vectơ khởi tạo hoặc chuỗi null cho đối số này, để truy cập các đối số sau để xác định KDF.

    Đối với các chế độ yêu cầu một vectơ khởi tạo, nó phải là 16 byte hoặc dài hơn (byte vượt quá 16 bị bỏ qua). Một lỗi xảy ra nếu thiếu

    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text',UNHEX('F3229A0B371ED2D9441B830D21A390C3')));
    1. Đối với các chế độ không yêu cầu vectơ khởi tạo, nó bị bỏ qua và cảnh báo được tạo nếu
    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text',UNHEX('F3229A0B371ED2D9441B830D21A390C3')));
    1 được chỉ định, trừ khi bạn đang sử dụng KDF.

    Giá trị mặc định cho biến hệ thống

    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'pbkdf2_hmac','salt', '2000');
    0 là
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'pbkdf2_hmac','salt', '2000');
    1 hoặc chế độ ECB, không yêu cầu vectơ khởi tạo. Các chế độ mã hóa khối được phép thay thế CBC, CFB1, CFB8, CFB128 và OFB đều yêu cầu một vectơ khởi tạo.

    Một chuỗi byte ngẫu nhiên để sử dụng cho vectơ khởi tạo có thể được tạo bằng cách gọi

    mysql> CREATE TALBE tmp1 AS SELECT AES_DECRYPT(fld_encryptedpwd, 'key')
           FROM users WHERE fld_id='1903';
    mysql> DESC tmp1;
    
    15.

    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text',UNHEX('F3229A0B371ED2D9441B830D21A390C3')));
    2

    Tên của hàm dẫn xuất khóa (KDF) để tạo khóa từ vật liệu khóa đầu vào được truyền trong

    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text',UNHEX('F3229A0B371ED2D9441B830D21A390C3')));
    0 và các đối số khác phù hợp với KDF. Đối số tùy chọn này có sẵn từ MySQL 8.0.30.

    Đối với cùng một trường hợp dữ liệu, sử dụng cùng một giá trị

    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text',UNHEX('F3229A0B371ED2D9441B830D21A390C3')));
    2 để mã hóa với
    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text',UNHEX('F3229A0B371ED2D9441B830D21A390C3')));
    5 và giải mã với
    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text',UNHEX('F3229A0B371ED2D9441B830D21A390C3')));
    6. Khi bạn chỉ định
    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text',UNHEX('F3229A0B371ED2D9441B830D21A390C3')));
    2, bạn phải chỉ định
    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text',UNHEX('F3229A0B371ED2D9441B830D21A390C3')));
    1, sử dụng vectơ khởi tạo hợp lệ hoặc chuỗi null nếu chế độ mã hóa không yêu cầu vectơ khởi tạo.

    Các giá trị sau được hỗ trợ:

    mysql> CREATE TALBE tmp1 AS SELECT AES_DECRYPT(fld_encryptedpwd, 'key')
           FROM users WHERE fld_id='1903';
    mysql> DESC tmp1;
    
    23

    HKDF, có sẵn từ OpenSSL 1.1.0. HKDF trích xuất một khóa giả từ vật liệu khóa sau đó mở rộng nó thành các khóa bổ sung. Với HKDF, bạn có thể chỉ định một loại muối tùy chọn (

    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text',UNHEX('F3229A0B371ED2D9441B830D21A390C3')));
    3) và thông tin cụ thể theo ngữ cảnh như chi tiết ứng dụng (
    mysql> CREATE TALBE tmp1 AS SELECT AES_DECRYPT(fld_encryptedpwd, 'key')
           FROM users WHERE fld_id='1903';
    mysql> DESC tmp1;
    
    25) để đưa vào tài liệu khóa.

    mysql> CREATE TALBE tmp1 AS SELECT AES_DECRYPT(fld_encryptedpwd, 'key')
           FROM users WHERE fld_id='1903';
    mysql> DESC tmp1;
    
    26

    PBKDF2, có sẵn từ OpenSSL 1.0.2. PBKDF2 áp dụng hàm giả và tài liệu khóa và lặp lại quá trình này một số lượng lớn để tạo khóa. Với PBKDF2, bạn có thể chỉ định một loại muối tùy chọn (

    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text',UNHEX('F3229A0B371ED2D9441B830D21A390C3')));
    3) để đưa vào vật liệu khóa và đặt số lần lặp được sử dụng để tạo khóa (
    mysql> CREATE TALBE tmp1 AS SELECT AES_DECRYPT(fld_encryptedpwd, 'key')
           FROM users WHERE fld_id='1903';
    mysql> DESC tmp1;
    
    28).

    Trong ví dụ này, HKDF được chỉ định là hàm dẫn xuất chính và thông tin muối và bối cảnh được cung cấp. Đối số cho vectơ khởi tạo được bao gồm nhưng là chuỗi trống:

    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');

    Trong ví dụ này, PBKDF2 được chỉ định là hàm dẫn xuất khóa, muối được cung cấp và số lần lặp được nhân đôi từ mức tối thiểu được khuyến nghị:

    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'pbkdf2_hmac','salt', '2000');
    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text',UNHEX('F3229A0B371ED2D9441B830D21A390C3')));
    3
    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text',UNHEX('F3229A0B371ED2D9441B830D21A390C3')));
    3

    Một muối được truyền đến hàm dẫn xuất chính (KDF). Đối số tùy chọn này có sẵn từ MySQL 8.0.30. Cả HKDF và PBKDF2 đều có thể sử dụng muối và nên sử dụng chúng được khuyến nghị để giúp ngăn chặn các cuộc tấn công dựa trên từ điển mật khẩu thông thường hoặc bảng cầu vồng.

    Một muối bao gồm dữ liệu ngẫu nhiên, cho bảo mật phải khác nhau cho mỗi hoạt động mã hóa. Một chuỗi ngẫu nhiên các byte để sử dụng cho muối có thể được tạo ra bằng cách gọi

    mysql> CREATE TALBE tmp1 AS SELECT AES_DECRYPT(fld_encryptedpwd, 'key')
           FROM users WHERE fld_id='1903';
    mysql> DESC tmp1;
    
    30. Ví dụ này tạo ra muối 64 bit:

    SET @salt = RANDOM_BYTES(8);

    Đối với cùng một trường hợp dữ liệu, sử dụng cùng một giá trị

    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text',UNHEX('F3229A0B371ED2D9441B830D21A390C3')));
    3 để mã hóa với
    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text',UNHEX('F3229A0B371ED2D9441B830D21A390C3')));
    5 và giải mã với
    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text',UNHEX('F3229A0B371ED2D9441B830D21A390C3')));
    6. Muối có thể được lưu trữ một cách an toàn cùng với dữ liệu được mã hóa.

    mysql> CREATE TALBE tmp1 AS SELECT AES_DECRYPT(fld_encryptedpwd, 'key')
           FROM users WHERE fld_id='1903';
    mysql> DESC tmp1;
    
    25

    Thông tin cụ thể theo ngữ cảnh để HKDF đưa vào tài liệu khóa, chẳng hạn như thông tin về ứng dụng. Đối số tùy chọn này có sẵn từ MySQL 8.0.30 khi bạn chỉ định

    mysql> CREATE TALBE tmp1 AS SELECT AES_DECRYPT(fld_encryptedpwd, 'key')
           FROM users WHERE fld_id='1903';
    mysql> DESC tmp1;
    
    23 là tên KDF. HKDF thêm thông tin này vào vật liệu khóa được chỉ định trong
    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text',UNHEX('F3229A0B371ED2D9441B830D21A390C3')));
    0 và muối được chỉ định trong
    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text',UNHEX('F3229A0B371ED2D9441B830D21A390C3')));
    3 để tạo khóa.

    Đối với cùng một trường hợp dữ liệu, sử dụng cùng một giá trị

    mysql> CREATE TALBE tmp1 AS SELECT AES_DECRYPT(fld_encryptedpwd, 'key')
           FROM users WHERE fld_id='1903';
    mysql> DESC tmp1;
    
    25 để mã hóa với
    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text',UNHEX('F3229A0B371ED2D9441B830D21A390C3')));
    5 và giải mã với
    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text',UNHEX('F3229A0B371ED2D9441B830D21A390C3')));
    6.

    mysql> CREATE TALBE tmp1 AS SELECT AES_DECRYPT(fld_encryptedpwd, 'key')
           FROM users WHERE fld_id='1903';
    mysql> DESC tmp1;
    
    28

    Số lần lặp cho PBKDF2 sử dụng khi sản xuất khóa. Đối số tùy chọn này có sẵn từ MySQL 8.0.30 khi bạn chỉ định

    mysql> CREATE TALBE tmp1 AS SELECT AES_DECRYPT(fld_encryptedpwd, 'key')
           FROM users WHERE fld_id='1903';
    mysql> DESC tmp1;
    
    26 là tên KDF. Một số lượng cao hơn mang lại sự kháng cự lớn hơn đối với các cuộc tấn công vũ phu vì nó có chi phí tính toán lớn hơn cho kẻ tấn công, nhưng điều tương tự cũng nhất thiết phải đúng với quá trình phái sinh chính. Mặc định nếu bạn không chỉ định đối số này là 1000, đây là mức tối thiểu được đề xuất bởi tiêu chuẩn OpenSSL.

    Đối với cùng một trường hợp dữ liệu, sử dụng cùng một giá trị

    mysql> CREATE TALBE tmp1 AS SELECT AES_DECRYPT(fld_encryptedpwd, 'key')
           FROM users WHERE fld_id='1903';
    mysql> DESC tmp1;
    
    28 để mã hóa với
    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text',UNHEX('F3229A0B371ED2D9441B830D21A390C3')));
    5 và giải mã với
    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text',UNHEX('F3229A0B371ED2D9441B830D21A390C3')));
    6.

    mysql> CREATE TALBE tmp1 AS SELECT AES_DECRYPT(fld_encryptedpwd, 'key')
           FROM users WHERE fld_id='1903';
    mysql> DESC tmp1;
    
    0
  • mysql> CREATE TALBE tmp1 AS SELECT AES_DECRYPT(fld_encryptedpwd, 'key')
           FROM users WHERE fld_id='1903';
    mysql> DESC tmp1;
    
    46)

    Nén một chuỗi và trả về kết quả dưới dạng chuỗi nhị phân. Hàm này yêu cầu MySQL phải được biên dịch với thư viện nén như

    mysql> CREATE TALBE tmp1 AS SELECT AES_DECRYPT(fld_encryptedpwd, 'key')
           FROM users WHERE fld_id='1903';
    mysql> DESC tmp1;
    
    47. Nếu không, giá trị trả về luôn luôn là
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');
    1. Giá trị trả về cũng là
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');
    1 nếu
    mysql> CREATE TALBE tmp1 AS SELECT AES_DECRYPT(fld_encryptedpwd, 'key')
           FROM users WHERE fld_id='1903';
    mysql> DESC tmp1;
    
    50 là
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');
    1. Chuỗi nén có thể không bị nén với
    mysql> CREATE TALBE tmp1 AS SELECT AES_DECRYPT(fld_encryptedpwd, 'key')
           FROM users WHERE fld_id='1903';
    mysql> DESC tmp1;
    
    52.

    mysql> CREATE TALBE tmp1 AS SELECT AES_DECRYPT(fld_encryptedpwd, 'key')
           FROM users WHERE fld_id='1903';
    mysql> DESC tmp1;
    
    1

    Nội dung chuỗi nén được lưu trữ theo cách sau:

    • Chuỗi trống được lưu trữ dưới dạng chuỗi trống.

    • Các chuỗi không trống được lưu trữ dưới dạng chiều dài 4 byte của chuỗi không nén (byte thấp đầu tiên), theo sau là chuỗi nén. Nếu chuỗi kết thúc bằng không gian, một ký tự

      mysql> CREATE TALBE tmp1 AS SELECT AES_DECRYPT(fld_encryptedpwd, 'key')
             FROM users WHERE fld_id='1903';
      mysql> DESC tmp1;
      
      53 được thêm vào để tránh các vấn đề với việc cắt tỉa endspace nếu kết quả được lưu trữ trong cột
      CREATE TABLE md5_tbl (md5_val CHAR(32), ...);
      INSERT INTO md5_tbl (md5_val, ...) VALUES(MD5('abcdef'), ...);
      0 hoặc
      CREATE TABLE md5_tbl (md5_val CHAR(32), ...);
      INSERT INTO md5_tbl (md5_val, ...) VALUES(MD5('abcdef'), ...);
      1. .

    Nếu

    mysql> CREATE TALBE tmp1 AS SELECT AES_DECRYPT(fld_encryptedpwd, 'key')
           FROM users WHERE fld_id='1903';
    mysql> DESC tmp1;
    
    60 được gọi từ bên trong máy khách MySQL, thì chuỗi nhị phân hiển thị bằng cách sử dụng ký hiệu thập lục phân, tùy thuộc vào giá trị của
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'pbkdf2_hmac','salt', '2000');
    6. Để biết thêm thông tin về tùy chọn đó, hãy xem Phần & NBSP; 4.5.1, MYSQL-Máy khách dòng lệnh MySQL.mysql client, binary strings display using hexadecimal notation, depending on the value of the
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'pbkdf2_hmac','salt', '2000');
    6. For more information about that option, see Section 4.5.1, “mysql — The MySQL Command-Line Client”.

  • MD5(

    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text', UNHEX(SHA2('My secret passphrase',512))));
    6)

    Tính toán tổng kiểm tra MD5 128 bit cho chuỗi. Giá trị được trả về dưới dạng chuỗi 32 chữ số thập lục phân hoặc

    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');
    1 nếu đối số là
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');
    1. Giá trị trả về có thể, ví dụ, được sử dụng làm phím băm. Xem các ghi chú ở đầu phần này về việc lưu trữ các giá trị băm hiệu quả.

    Giá trị trả về là một chuỗi trong bộ ký tự kết nối.

    Nếu chế độ FIPS được bật,

    CREATE TABLE md5_tbl (md5_val CHAR(32), ...);
    INSERT INTO md5_tbl (md5_val, ...) VALUES(MD5('abcdef'), ...);
    3 trả về
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');
    1. Xem Phần & NBSP; 6.8, hỗ trợ FIP của FIP.

    mysql> CREATE TALBE tmp1 AS SELECT AES_DECRYPT(fld_encryptedpwd, 'key')
           FROM users WHERE fld_id='1903';
    mysql> DESC tmp1;
    
    2

    Đây là thuật toán tiêu cực tin nhắn MD5 của RSA RSA.RSA Data Security, Inc. MD5 Message-Digest Algorithm.

    Xem ghi chú liên quan đến thuật toán MD5 ở đầu phần này.

  • mysql> CREATE TALBE tmp1 AS SELECT AES_DECRYPT(fld_encryptedpwd, 'key')
           FROM users WHERE fld_id='1903';
    mysql> DESC tmp1;
    
    67)

    Hàm này trả về một chuỗi nhị phân

    mysql> CREATE TALBE tmp1 AS SELECT AES_DECRYPT(fld_encryptedpwd, 'key')
           FROM users WHERE fld_id='1903';
    mysql> DESC tmp1;
    
    68 Byte ngẫu nhiên được tạo bằng trình tạo số ngẫu nhiên của thư viện SSL. Các giá trị được phép của
    mysql> CREATE TALBE tmp1 AS SELECT AES_DECRYPT(fld_encryptedpwd, 'key')
           FROM users WHERE fld_id='1903';
    mysql> DESC tmp1;
    
    68 phạm vi từ 1 đến 1024. Đối với các giá trị bên ngoài phạm vi đó, xảy ra lỗi. Trả về
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');
    1 nếu
    mysql> CREATE TALBE tmp1 AS SELECT AES_DECRYPT(fld_encryptedpwd, 'key')
           FROM users WHERE fld_id='1903';
    mysql> DESC tmp1;
    
    68 là
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');
    1.

    mysql> CREATE TALBE tmp1 AS SELECT AES_DECRYPT(fld_encryptedpwd, 'key')
           FROM users WHERE fld_id='1903';
    mysql> DESC tmp1;
    
    30 có thể được sử dụng để cung cấp vectơ khởi tạo cho các hàm
    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text',UNHEX('F3229A0B371ED2D9441B830D21A390C3')));
    6 và
    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text',UNHEX('F3229A0B371ED2D9441B830D21A390C3')));
    5. Để sử dụng trong bối cảnh đó,
    mysql> CREATE TALBE tmp1 AS SELECT AES_DECRYPT(fld_encryptedpwd, 'key')
           FROM users WHERE fld_id='1903';
    mysql> DESC tmp1;
    
    68 phải có ít nhất 16. Các giá trị lớn hơn được cho phép, nhưng các byte vượt quá 16 bị bỏ qua.

    mysql> CREATE TALBE tmp1 AS SELECT AES_DECRYPT(fld_encryptedpwd, 'key')
           FROM users WHERE fld_id='1903';
    mysql> DESC tmp1;
    
    30 tạo ra một giá trị ngẫu nhiên, điều này làm cho kết quả của nó không phải là không xác định. Do đó, các câu lệnh sử dụng chức năng này là không an toàn cho sao chép dựa trên tuyên bố.

    Nếu

    mysql> CREATE TALBE tmp1 AS SELECT AES_DECRYPT(fld_encryptedpwd, 'key')
           FROM users WHERE fld_id='1903';
    mysql> DESC tmp1;
    
    30 được gọi từ bên trong máy khách MySQL, thì chuỗi nhị phân hiển thị bằng cách sử dụng ký hiệu thập lục phân, tùy thuộc vào giá trị của
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'pbkdf2_hmac','salt', '2000');
    6. Để biết thêm thông tin về tùy chọn đó, hãy xem Phần & NBSP; 4.5.1, MYSQL-Máy khách dòng lệnh MySQL.mysql client, binary strings display using hexadecimal notation, depending on the value of the
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'pbkdf2_hmac','salt', '2000');
    6. For more information about that option, see Section 4.5.1, “mysql — The MySQL Command-Line Client”.

  • SHA1 (________ 66), SHA (________ 66), SHA(

    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text', UNHEX(SHA2('My secret passphrase',512))));
    6)

    Tính toán tổng kiểm tra SHA-1 160 bit cho chuỗi, như được mô tả trong RFC 3174 (thuật toán băm bảo mật). Giá trị được trả về dưới dạng chuỗi 40 chữ số thập lục phân hoặc

    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');
    1 nếu đối số là
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');
    1. Một trong những cách sử dụng có thể cho chức năng này là phím băm. Xem các ghi chú ở đầu phần này về việc lưu trữ các giá trị băm hiệu quả.
    CREATE TABLE md5_tbl (md5_val CHAR(32), ...);
    INSERT INTO md5_tbl (md5_val, ...) VALUES(MD5('abcdef'), ...);
    4 đồng nghĩa với
    CREATE TABLE md5_tbl (md5_val CHAR(32), ...);
    INSERT INTO md5_tbl (md5_val, ...) VALUES(MD5('abcdef'), ...);
    5.

    Giá trị trả về là một chuỗi trong bộ ký tự kết nối.

    mysql> CREATE TALBE tmp1 AS SELECT AES_DECRYPT(fld_encryptedpwd, 'key')
           FROM users WHERE fld_id='1903';
    mysql> DESC tmp1;
    
    3

    CREATE TABLE md5_tbl (md5_val CHAR(32), ...);
    INSERT INTO md5_tbl (md5_val, ...) VALUES(MD5('abcdef'), ...);
    5 có thể được coi là một loại tiền điện tử an toàn hơn tương đương với
    CREATE TABLE md5_tbl (md5_val CHAR(32), ...);
    INSERT INTO md5_tbl (md5_val, ...) VALUES(MD5('abcdef'), ...);
    3. Tuy nhiên, xem ghi chú liên quan đến thuật toán MD5 và SHA-1 ở phần đầu phần này.

  • SHA2 (________ 66,

    mysql> CREATE TALBE tmp1 AS SELECT AES_DECRYPT(fld_encryptedpwd, 'key')
           FROM users WHERE fld_id='1903';
    mysql> DESC tmp1;
    
    89)

    Tính toán họ các chức năng băm SHA-2 (SHA-224, SHA-256, SHA-384 và SHA-512). Đối số đầu tiên là chuỗi văn bản được băm. Đối số thứ hai cho biết độ dài bit mong muốn của kết quả, phải có giá trị là 224, 256, 384, 512 hoặc 0 (tương đương với 256). Nếu một trong hai đối số là

    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');
    1 hoặc độ dài băm không phải là một trong những giá trị được phép, giá trị trả về là
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');
    1. Mặt khác, kết quả hàm là giá trị băm chứa số bit mong muốn. Xem các ghi chú ở đầu phần này về việc lưu trữ các giá trị băm hiệu quả.

    Giá trị trả về là một chuỗi trong bộ ký tự kết nối.

    mysql> CREATE TALBE tmp1 AS SELECT AES_DECRYPT(fld_encryptedpwd, 'key')
           FROM users WHERE fld_id='1903';
    mysql> DESC tmp1;
    
    4

    Hàm này chỉ hoạt động nếu MySQL đã được cấu hình với hỗ trợ SSL. Xem Phần & NBSP; 6.3, Sử dụng các kết nối được mã hóa.

    CREATE TABLE md5_tbl (md5_val CHAR(32), ...);
    INSERT INTO md5_tbl (md5_val, ...) VALUES(MD5('abcdef'), ...);
    6 có thể được coi là an toàn về mặt mật mã hơn
    CREATE TABLE md5_tbl (md5_val CHAR(32), ...);
    INSERT INTO md5_tbl (md5_val, ...) VALUES(MD5('abcdef'), ...);
    3 hoặc
    CREATE TABLE md5_tbl (md5_val CHAR(32), ...);
    INSERT INTO md5_tbl (md5_val, ...) VALUES(MD5('abcdef'), ...);
    5.

  • mysql> CREATE TALBE tmp1 AS SELECT AES_DECRYPT(fld_encryptedpwd, 'key')
           FROM users WHERE fld_id='1903';
    mysql> DESC tmp1;
    
    95)

    Đưa ra câu lệnh SQL dưới dạng chuỗi, trả về giá trị băm Digest câu lệnh dưới dạng chuỗi trong bộ ký tự kết nối hoặc

    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');
    1 nếu đối số là
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');
    1. Hàm
    CREATE TABLE md5_tbl (md5_val CHAR(32), ...);
    INSERT INTO md5_tbl (md5_val, ...) VALUES(MD5('abcdef'), ...);
    8 liên quan trả về tiêu hóa câu lệnh được chuẩn hóa. Để biết thông tin về tiêu hóa câu lệnh, xem Phần & NBSP; 27.10, Tuyên bố biểu đồ hiệu suất tiêu hóa và lấy mẫu.

    Cả hai chức năng đều sử dụng trình phân tích cú pháp MySQL để phân tích câu lệnh. Nếu phân tích cú pháp thất bại, xảy ra lỗi. Thông báo lỗi chỉ bao gồm lỗi phân tích cú pháp nếu câu lệnh được cung cấp dưới dạng chuỗi theo nghĩa đen.

    Biến hệ thống

    mysql> CREATE TALBE tmp1 AS SELECT AES_DECRYPT(fld_encryptedpwd, 'key')
           FROM users WHERE fld_id='1903';
    mysql> DESC tmp1;
    
    99 xác định số lượng byte tối đa có sẵn cho các chức năng này để tính toán các tiêu hóa câu lệnh được chuẩn hóa.

    mysql> CREATE TALBE tmp1 AS SELECT AES_DECRYPT(fld_encryptedpwd, 'key')
           FROM users WHERE fld_id='1903';
    mysql> DESC tmp1;
    
    5
  • CREATE TABLE md5_tbl (md5_val CHAR(32), ...);
    INSERT INTO md5_tbl (md5_val, ...) VALUES(MD5('abcdef'), ...);
    00)

    Đưa ra một câu lệnh SQL dưới dạng chuỗi, trả về tiêu hóa câu lệnh được chuẩn hóa dưới dạng chuỗi trong bộ ký tự kết nối hoặc

    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');
    1 nếu đối số là
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');
    1. Để thảo luận và ví dụ bổ sung, hãy xem mô tả của hàm
    CREATE TABLE md5_tbl (md5_val CHAR(32), ...);
    INSERT INTO md5_tbl (md5_val, ...) VALUES(MD5('abcdef'), ...);
    7 liên quan.

  • CREATE TABLE md5_tbl (md5_val CHAR(32), ...);
    INSERT INTO md5_tbl (md5_val, ...) VALUES(MD5('abcdef'), ...);
    04)

    Khai thác một chuỗi được nén bởi hàm

    mysql> CREATE TALBE tmp1 AS SELECT AES_DECRYPT(fld_encryptedpwd, 'key')
           FROM users WHERE fld_id='1903';
    mysql> DESC tmp1;
    
    60. Nếu đối số không phải là giá trị nén, kết quả là
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');
    1; Nếu
    CREATE TABLE md5_tbl (md5_val CHAR(32), ...);
    INSERT INTO md5_tbl (md5_val, ...) VALUES(MD5('abcdef'), ...);
    07 là
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');
    1, kết quả cũng là
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');
    1. Hàm này yêu cầu MySQL phải được biên dịch với thư viện nén như
    mysql> CREATE TALBE tmp1 AS SELECT AES_DECRYPT(fld_encryptedpwd, 'key')
           FROM users WHERE fld_id='1903';
    mysql> DESC tmp1;
    
    47. Nếu không, giá trị trả về luôn luôn là
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');
    1.

    mysql> CREATE TALBE tmp1 AS SELECT AES_DECRYPT(fld_encryptedpwd, 'key')
           FROM users WHERE fld_id='1903';
    mysql> DESC tmp1;
    
    6
  • CREATE TABLE md5_tbl (md5_val CHAR(32), ...);
    INSERT INTO md5_tbl (md5_val, ...) VALUES(MD5('abcdef'), ...);
    12)

    Trả về độ dài mà chuỗi nén có trước khi được nén. Trả về

    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');
    1 nếu
    CREATE TABLE md5_tbl (md5_val CHAR(32), ...);
    INSERT INTO md5_tbl (md5_val, ...) VALUES(MD5('abcdef'), ...);
    14 là
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');
    1.

    mysql> CREATE TALBE tmp1 AS SELECT AES_DECRYPT(fld_encryptedpwd, 'key')
           FROM users WHERE fld_id='1903';
    mysql> DESC tmp1;
    
    7
  • VALIDATE_PASSWORD_STRENGTH(

    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text', UNHEX(SHA2('My secret passphrase',512))));
    6)

    Đưa ra một đối số đại diện cho mật khẩu rõ ràng, hàm này trả về một số nguyên để cho biết mật khẩu mạnh đến mức nào hoặc

    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');
    1 nếu đối số là
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');
    1. Giá trị trả về dao động từ 0 (yếu) đến 100 (mạnh).

    Đánh giá mật khẩu bởi

    CREATE TABLE md5_tbl (md5_val CHAR(32), ...);
    INSERT INTO md5_tbl (md5_val, ...) VALUES(MD5('abcdef'), ...);
    19 được thực hiện bởi thành phần ____220. Nếu thành phần đó không được cài đặt, hàm luôn trả về 0. Để biết thông tin về việc cài đặt
    CREATE TABLE md5_tbl (md5_val CHAR(32), ...);
    INSERT INTO md5_tbl (md5_val, ...) VALUES(MD5('abcdef'), ...);
    20, xem Phần & NBSP; 6.4.3, thành phần xác thực mật khẩu thành phần. Để kiểm tra hoặc định cấu hình các tham số ảnh hưởng đến kiểm tra mật khẩu, kiểm tra hoặc đặt các biến hệ thống được thực hiện bởi
    CREATE TABLE md5_tbl (md5_val CHAR(32), ...);
    INSERT INTO md5_tbl (md5_val, ...) VALUES(MD5('abcdef'), ...);
    20. Xem Phần & NBSP; 6.4.3.2, Tùy chọn xác thực mật khẩu và các biến xác thực.

    Mật khẩu phải tuân theo các bài kiểm tra ngày càng nghiêm ngặt và giá trị trả về phản ánh các thử nghiệm nào được thỏa mãn, như được hiển thị trong bảng sau. Ngoài ra, nếu biến hệ thống

    CREATE TABLE md5_tbl (md5_val CHAR(32), ...);
    INSERT INTO md5_tbl (md5_val, ...) VALUES(MD5('abcdef'), ...);
    23 được bật và mật khẩu khớp với tên người dùng,
    CREATE TABLE md5_tbl (md5_val CHAR(32), ...);
    INSERT INTO md5_tbl (md5_val, ...) VALUES(MD5('abcdef'), ...);
    19 trả về 0 bất kể các biến hệ thống
    CREATE TABLE md5_tbl (md5_val CHAR(32), ...);
    INSERT INTO md5_tbl (md5_val, ...) VALUES(MD5('abcdef'), ...);
    20 khác được đặt như thế nào.

    Kiểm tra mật khẩuGiá trị trả về
    Chiều dài <40
    Chiều dài ≥ 4 và <
    CREATE TABLE md5_tbl (md5_val CHAR(32), ...);
    INSERT INTO md5_tbl (md5_val, ...) VALUES(MD5('abcdef'), ...);
    26
    25
    Thỏa mãn chính sách 1 (
    CREATE TABLE md5_tbl (md5_val CHAR(32), ...);
    INSERT INTO md5_tbl (md5_val, ...) VALUES(MD5('abcdef'), ...);
    27)
    50
    Thỏa mãn chính sách 2 (
    CREATE TABLE md5_tbl (md5_val CHAR(32), ...);
    INSERT INTO md5_tbl (md5_val, ...) VALUES(MD5('abcdef'), ...);
    28)
    75
    Thỏa mãn chính sách 3 (
    CREATE TABLE md5_tbl (md5_val CHAR(32), ...);
    INSERT INTO md5_tbl (md5_val, ...) VALUES(MD5('abcdef'), ...);
    29)
    100

Làm cách nào để giải mã dữ liệu được mã hóa trong mysql?

Hàm MySQL AES_Decrypt trả về chuỗi ban đầu sau khi giải mã chuỗi được mã hóa. Nó sử dụng thuật toán AES (Tiêu chuẩn mã hóa nâng cao) để thực hiện giải mã. Hàm AES_Decrypt trả về chuỗi được 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 để truy vấn một cột được mã hóa trong MySQL?

Lấy 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ã những người đó vào một bàn tạm thời ..
Thực hiện tìm kiếm so với bảng đó ..
Sử dụng ID để truy xuất các bản ghi đầy đủ (tất cả các trường) phù hợp với tiêu chí tìm kiếm ..
giải mã chúng và trả chúng cho người dùng ..

Làm thế nào để bạn giải mã một chuỗi?

Phương pháp giải mã: Tìm độ dài L của chuỗi.Tìm các giá trị trần và sàn của √length và gán chúng cho các biến.Tạo một ma trận 2D và điền vào ma trận bằng các ký tự của cột chuỗi khôn ngoan.Đọc hàng ma trận khôn ngoan để có được chuỗi được giải mã.Find the length L of the string. Find the ceil and floor values of √Length and assign them to the variables. Create a 2D matrix and fill the matrix by characters of string column-wise. Read the matrix row-wise to get the decrypted string.

Làm thế nào để bạn giải mã một cơ sở dữ liệu?

Nếu bạn biết mật khẩu cho cơ sở dữ liệu được mã hóa, bạn cũng có thể giải mã cơ sở dữ liệu và xóa mật khẩu của nó ...
Mở cơ sở dữ liệu ở chế độ độc quyền.....
Trên tab Tệp, nhấp vào thông tin, sau đó bấm vào cơ sở dữ liệu DEMRYPT ..