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

Many encryption and compression functions return strings for which the result might contain arbitrary byte values. If you want to store these results, use a column with a

CREATE TABLE md5_tbl (md5_val BINARY(16), ...);
INSERT INTO md5_tbl (md5_val, ...) VALUES(UNHEX(MD5('abcdef')), ...);
6 or
CREATE TABLE md5_tbl (md5_val BINARY(16), ...);
INSERT INTO md5_tbl (md5_val, ...) VALUES(UNHEX(MD5('abcdef')), ...);
7 binary string data type. This avoids potential problems with trailing space removal or character set conversion that would change data values, such as may occur if you use a nonbinary string data type (
CREATE TABLE md5_tbl (md5_val BINARY(16), ...);
INSERT INTO md5_tbl (md5_val, ...) VALUES(UNHEX(MD5('abcdef')), ...);
8,
CREATE TABLE md5_tbl (md5_val BINARY(16), ...);
INSERT INTO md5_tbl (md5_val, ...) VALUES(UNHEX(MD5('abcdef')), ...);
9,
16 * (trunc(string_length / 16) + 1)
0).

Some encryption functions return strings of ASCII characters:

16 * (trunc(string_length / 16) + 1)
1,
16 * (trunc(string_length / 16) + 1)
2,
16 * (trunc(string_length / 16) + 1)
3,
16 * (trunc(string_length / 16) + 1)
4,
16 * (trunc(string_length / 16) + 1)
5,
16 * (trunc(string_length / 16) + 1)
6. Their return value is a string that has a character set and collation determined by the
16 * (trunc(string_length / 16) + 1)
7 and
16 * (trunc(string_length / 16) + 1)
8 system variables. This is a nonbinary string unless the character set is
16 * (trunc(string_length / 16) + 1)
9.

If an application stores values from a function such as

16 * (trunc(string_length / 16) + 1)
1 or
16 * (trunc(string_length / 16) + 1)
3 that returns a string of hex digits, more efficient storage and comparisons can be obtained by converting the hex representation to binary using
INSERT INTO t
VALUES (1,AES_ENCRYPT('text',UNHEX('F3229A0B371ED2D9441B830D21A390C3')));
2 and storing the result in a
INSERT INTO t
VALUES (1,AES_ENCRYPT('text',UNHEX('F3229A0B371ED2D9441B830D21A390C3')));
3) column. Each pair of hexadecimal digits requires one byte in binary form, so the value of
INSERT INTO t
VALUES (1,AES_ENCRYPT('text',UNHEX('F3229A0B371ED2D9441B830D21A390C3')));
4 depends on the length of the hex string.
INSERT INTO t
VALUES (1,AES_ENCRYPT('text',UNHEX('F3229A0B371ED2D9441B830D21A390C3')));
4 is 16 for an
16 * (trunc(string_length / 16) + 1)
1 value and 20 for a
16 * (trunc(string_length / 16) + 1)
3 value. For
16 * (trunc(string_length / 16) + 1)
4,
INSERT INTO t
VALUES (1,AES_ENCRYPT('text',UNHEX('F3229A0B371ED2D9441B830D21A390C3')));
4 ranges from 28 to 32 depending on the argument specifying the desired bit length of the result.

The size penalty for storing the hex string in a

CREATE TABLE md5_tbl (md5_val BINARY(16), ...);
INSERT INTO md5_tbl (md5_val, ...) VALUES(UNHEX(MD5('abcdef')), ...);
8 column is at least two times, up to eight times if the value is stored in a column that uses the
INSERT INTO t
VALUES (1,AES_ENCRYPT('text', UNHEX(SHA2('My secret passphrase',512))));
1 character set (where each character uses 4 bytes). Storing the string also results in slower comparisons because of the larger values and the need to take character set collation rules into account.

Suppose that an application stores

16 * (trunc(string_length / 16) + 1)
1 string values in a
INSERT INTO t
VALUES (1,AES_ENCRYPT('text', UNHEX(SHA2('My secret passphrase',512))));
3 column:

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

To convert hex strings to more compact form, modify the application to use

INSERT INTO t
VALUES (1,AES_ENCRYPT('text',UNHEX('F3229A0B371ED2D9441B830D21A390C3')));
2 and
INSERT INTO t
VALUES (1,AES_ENCRYPT('text', UNHEX(SHA2('My secret passphrase',512))));
5 instead as follows:

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

Applications should be prepared to handle the very rare case that a hashing function produces the same value for two different input values. One way to make collisions detectable is to make the hash column a primary key.

Note

Exploits for the MD5 and SHA-1 algorithms have become known. You may wish to consider using another one-way encryption function described in this section instead, such as

16 * (trunc(string_length / 16) + 1)
4.

Caution

Passwords or other sensitive values supplied as arguments to encryption functions are sent as cleartext to the MySQL server unless an SSL connection is used. Also, such values appear in any MySQL logs to which they are written. To avoid these types of exposure, applications can encrypt sensitive values on the client side before sending them to the server. The same considerations apply to encryption keys. To avoid exposing these, applications can use stored procedures to encrypt and decrypt values on the server side.

  • INSERT INTO t
    VALUES (1,AES_ENCRYPT('text', UNHEX(SHA2('My secret passphrase',512))));
    7,
    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text', UNHEX(SHA2('My secret passphrase',512))));
    8[,
    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text', UNHEX(SHA2('My secret passphrase',512))));
    9][,
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');
    0][,
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');
    1][,
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');
    2])

    This function decrypts data using the official AES (Advanced Encryption Standard) algorithm. For more information, see the description of

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

    Statements that use

    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');
    4 are unsafe for statement-based replication.

  • SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');
    5,
    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text', UNHEX(SHA2('My secret passphrase',512))));
    8[,
    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text', UNHEX(SHA2('My secret passphrase',512))));
    9][,
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');
    0][,
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');
    1][,
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');
    2])

    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');
    3 and
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');
    4 implement encryption and decryption of data using the official AES (Advanced Encryption Standard) algorithm, previously known as 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.

    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');
    3 encrypts the string
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'pbkdf2_hmac','salt', '2000');
    4 using the key string
    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text', UNHEX(SHA2('My secret passphrase',512))));
    8, and returns a binary string containing the encrypted output.
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');
    4 decrypts the encrypted string
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'pbkdf2_hmac','salt', '2000');
    7 using the key string
    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text', UNHEX(SHA2('My secret passphrase',512))));
    8, and returns the original plaintext string. If either function argument is
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'pbkdf2_hmac','salt', '2000');
    9, the function returns
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'pbkdf2_hmac','salt', '2000');
    9. If
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');
    4 detects invalid data or incorrect padding, it returns
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'pbkdf2_hmac','salt', '2000');
    9. However, it is possible for
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');
    4 to return a non-
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'pbkdf2_hmac','salt', '2000');
    9 value (possibly garbage) if the input data or the key is invalid.

    From MySQL 8.0.30, the functions support the use of a key derivation function (KDF) to create a cryptographically strong secret key from the information passed in

    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text', UNHEX(SHA2('My secret passphrase',512))));
    8. The derived key is used to encrypt and decrypt the data, and it remains in the MySQL Server instance and is not accessible to users. Using a KDF is highly recommended, as it provides better security than specifying your own premade key or deriving it by a simpler method as you use the function. The functions support HKDF (available from OpenSSL 1.1.0), for which you can specify an optional salt and context-specific information to include in the keying material, and PBKDF2 (available from OpenSSL 1.0.2), for which you can specify an optional salt and set the number of iterations used to produce the key.

    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');
    3 và
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');
    4 cho phép kiểm soát chế độ mã hóa khối. Biến hệ thống
    SET @salt = RANDOM_BYTES(8);
    8 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à
    SET @salt = RANDOM_BYTES(8);
    9, 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(SHA2('My secret passphrase',512))));
    9 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

    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');
    3 hoặc
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');
    4 không an toàn cho sao chép dựa trên tuyên bố.

    Nếu

    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');
    3 đượ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
    mysql> SET block_encryption_mode = 'aes-256-cbc';
    mysql> SET @key_str = SHA2('My secret passphrase',512);
    mysql> SET @init_vector = RANDOM_BYTES(16);
    mysql> SET @crypt_str = AES_ENCRYPT('text',@key_str,@init_vector);
    mysql> SELECT AES_DECRYPT(@crypt_str,@key_str,@init_vector);
    +-----------------------------------------------+
    | AES_DECRYPT(@crypt_str,@key_str,@init_vector) |
    +-----------------------------------------------+
    | text                                          |
    +-----------------------------------------------+
    4. Để 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
    mysql> SET block_encryption_mode = 'aes-256-cbc';
    mysql> SET @key_str = SHA2('My secret passphrase',512);
    mysql> SET @init_vector = RANDOM_BYTES(16);
    mysql> SET @crypt_str = AES_ENCRYPT('text',@key_str,@init_vector);
    mysql> SELECT AES_DECRYPT(@crypt_str,@key_str,@init_vector);
    +-----------------------------------------------+
    | AES_DECRYPT(@crypt_str,@key_str,@init_vector) |
    +-----------------------------------------------+
    | text                                          |
    +-----------------------------------------------+
    4. 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

    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');
    3 và
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');
    4 như sau:

    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'pbkdf2_hmac','salt', '2000');
    4

    Chuỗi cho

    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');
    3 để mã hóa bằng cách sử dụng chuỗi khóa
    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text', UNHEX(SHA2('My secret passphrase',512))));
    8 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
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'pbkdf2_hmac','salt', '2000');
    4 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 chức năng
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');
    4.

    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'pbkdf2_hmac','salt', '2000');
    7

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

    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');
    4 để giải mã bằng cách sử dụng chuỗi khóa
    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text', UNHEX(SHA2('My secret passphrase',512))));
    8 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. Độ dài của
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'pbkdf2_hmac','salt', '2000');
    7 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(SHA2('My secret passphrase',512))));
    8
    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text', UNHEX(SHA2('My secret passphrase',512))));
    8

    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(SHA2('My secret passphrase',512))));
    8 để mã hóa với
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');
    3 và giải mã với
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');
    4.

    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(SHA2('My secret passphrase',512))));
    8 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(SHA2('My secret passphrase',512))));
    8 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(SHA2('My secret passphrase',512))));
    8 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(SHA2('My secret passphrase',512))));
    8, 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(SHA2('My secret passphrase',512))));
    9

    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

    SET @salt = RANDOM_BYTES(8);
    8 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(SHA2('My secret passphrase',512))));
    9 để mã hóa với
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');
    3 và giải mã với
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');
    4.

    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(SHA2('My secret passphrase',512))));
    9. Đố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(SHA2('My secret passphrase',512))));
    9 được chỉ định, trừ khi bạn đang sử dụng KDF.

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

    SET @salt = RANDOM_BYTES(8);
    8 là
    SET @salt = RANDOM_BYTES(8);
    9 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

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

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

    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(SHA2('My secret passphrase',512))));
    8 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ị

    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');
    0 để mã hóa với
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');
    3 và giải mã với
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');
    4. Khi bạn chỉ định
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');
    0, bạn phải chỉ định
    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text', UNHEX(SHA2('My secret passphrase',512))));
    9, 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ợ:

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

    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 (

    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');
    1) và thông tin cụ thể theo ngữ cảnh như chi tiết ứng dụng (
    CREATE TABLE md5_tbl (md5_val BINARY(16), ...);
    INSERT INTO md5_tbl (md5_val, ...) VALUES(UNHEX(MD5('abcdef')), ...);
    23) để đưa vào tài liệu khóa.

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

    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 (

    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');
    1) để đưa vào vật liệu khóa và đặt số lần lặp được sử dụng để tạo khóa (
    CREATE TABLE md5_tbl (md5_val BINARY(16), ...);
    INSERT INTO md5_tbl (md5_val, ...) VALUES(UNHEX(MD5('abcdef')), ...);
    26).

    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');
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');
    1
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');
    1

    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 byte ngẫu nhiên để sử dụng cho muối có thể được tạo ra bằng cách gọi

    CREATE TABLE md5_tbl (md5_val BINARY(16), ...);
    INSERT INTO md5_tbl (md5_val, ...) VALUES(UNHEX(MD5('abcdef')), ...);
    28. 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ị

    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');
    1 để mã hóa với
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');
    3 và giải mã với
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');
    4. 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.

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

    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

    CREATE TABLE md5_tbl (md5_val BINARY(16), ...);
    INSERT INTO md5_tbl (md5_val, ...) VALUES(UNHEX(MD5('abcdef')), ...);
    21 là tên KDF. HKDF thêm thông tin này vào tài liệu khóa được chỉ định trong
    INSERT INTO t
    VALUES (1,AES_ENCRYPT('text', UNHEX(SHA2('My secret passphrase',512))));
    8 và muối được chỉ định trong
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');
    1 để 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ị

    CREATE TABLE md5_tbl (md5_val BINARY(16), ...);
    INSERT INTO md5_tbl (md5_val, ...) VALUES(UNHEX(MD5('abcdef')), ...);
    23 để mã hóa với
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');
    3 và giải mã với
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');
    4.

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

    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

    CREATE TABLE md5_tbl (md5_val BINARY(16), ...);
    INSERT INTO md5_tbl (md5_val, ...) VALUES(UNHEX(MD5('abcdef')), ...);
    24 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ị

    CREATE TABLE md5_tbl (md5_val BINARY(16), ...);
    INSERT INTO md5_tbl (md5_val, ...) VALUES(UNHEX(MD5('abcdef')), ...);
    26 để mã hóa với
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');
    3 và giải mã với
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');
    4.

    mysql> SET block_encryption_mode = 'aes-256-cbc';
    mysql> SET @key_str = SHA2('My secret passphrase',512);
    mysql> SET @init_vector = RANDOM_BYTES(16);
    mysql> SET @crypt_str = AES_ENCRYPT('text',@key_str,@init_vector);
    mysql> SELECT AES_DECRYPT(@crypt_str,@key_str,@init_vector);
    +-----------------------------------------------+
    | AES_DECRYPT(@crypt_str,@key_str,@init_vector) |
    +-----------------------------------------------+
    | text                                          |
    +-----------------------------------------------+
  • CREATE TABLE md5_tbl (md5_val BINARY(16), ...);
    INSERT INTO md5_tbl (md5_val, ...) VALUES(UNHEX(MD5('abcdef')), ...);
    44)

    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ư

    CREATE TABLE md5_tbl (md5_val BINARY(16), ...);
    INSERT INTO md5_tbl (md5_val, ...) VALUES(UNHEX(MD5('abcdef')), ...);
    45. Nếu không, giá trị trả về luôn luôn là
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'pbkdf2_hmac','salt', '2000');
    9. Giá trị trả về cũng là
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'pbkdf2_hmac','salt', '2000');
    9 nếu
    CREATE TABLE md5_tbl (md5_val BINARY(16), ...);
    INSERT INTO md5_tbl (md5_val, ...) VALUES(UNHEX(MD5('abcdef')), ...);
    48 là
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'pbkdf2_hmac','salt', '2000');
    9. Chuỗi nén có thể không bị nén với
    CREATE TABLE md5_tbl (md5_val BINARY(16), ...);
    INSERT INTO md5_tbl (md5_val, ...) VALUES(UNHEX(MD5('abcdef')), ...);
    50.

    mysql> SELECT LENGTH(COMPRESS(REPEAT('a',1000)));
            -> 21
    mysql> SELECT LENGTH(COMPRESS(''));
            -> 0
    mysql> SELECT LENGTH(COMPRESS('a'));
            -> 13
    mysql> SELECT LENGTH(COMPRESS(REPEAT('a',16)));
            -> 15

    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ự

      CREATE TABLE md5_tbl (md5_val BINARY(16), ...);
      INSERT INTO md5_tbl (md5_val, ...) VALUES(UNHEX(MD5('abcdef')), ...);
      51 đượ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 BINARY(16), ...);
      INSERT INTO md5_tbl (md5_val, ...) VALUES(UNHEX(MD5('abcdef')), ...);
      8 hoặc
      CREATE TABLE md5_tbl (md5_val BINARY(16), ...);
      INSERT INTO md5_tbl (md5_val, ...) VALUES(UNHEX(MD5('abcdef')), ...);
      9. .

    Nếu

    CREATE TABLE md5_tbl (md5_val BINARY(16), ...);
    INSERT INTO md5_tbl (md5_val, ...) VALUES(UNHEX(MD5('abcdef')), ...);
    58 đượ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
    mysql> SET block_encryption_mode = 'aes-256-cbc';
    mysql> SET @key_str = SHA2('My secret passphrase',512);
    mysql> SET @init_vector = RANDOM_BYTES(16);
    mysql> SET @crypt_str = AES_ENCRYPT('text',@key_str,@init_vector);
    mysql> SELECT AES_DECRYPT(@crypt_str,@key_str,@init_vector);
    +-----------------------------------------------+
    | AES_DECRYPT(@crypt_str,@key_str,@init_vector) |
    +-----------------------------------------------+
    | text                                          |
    +-----------------------------------------------+
    4. Để 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
    mysql> SET block_encryption_mode = 'aes-256-cbc';
    mysql> SET @key_str = SHA2('My secret passphrase',512);
    mysql> SET @init_vector = RANDOM_BYTES(16);
    mysql> SET @crypt_str = AES_ENCRYPT('text',@key_str,@init_vector);
    mysql> SELECT AES_DECRYPT(@crypt_str,@key_str,@init_vector);
    +-----------------------------------------------+
    | AES_DECRYPT(@crypt_str,@key_str,@init_vector) |
    +-----------------------------------------------+
    | text                                          |
    +-----------------------------------------------+
    4. For more information about that option, see Section 4.5.1, “mysql — The MySQL Command-Line Client”.

  • MD5(

    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'pbkdf2_hmac','salt', '2000');
    4)

    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', '', 'pbkdf2_hmac','salt', '2000');
    9 nếu đối số là
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'pbkdf2_hmac','salt', '2000');
    9. 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,

    16 * (trunc(string_length / 16) + 1)
    1 trả về
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'pbkdf2_hmac','salt', '2000');
    9. Xem Phần & NBSP; 6.8, hỗ trợ FIP của FIP.

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

    Đâ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.

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

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

    CREATE TABLE md5_tbl (md5_val BINARY(16), ...);
    INSERT INTO md5_tbl (md5_val, ...) VALUES(UNHEX(MD5('abcdef')), ...);
    66 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
    CREATE TABLE md5_tbl (md5_val BINARY(16), ...);
    INSERT INTO md5_tbl (md5_val, ...) VALUES(UNHEX(MD5('abcdef')), ...);
    66 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', '', 'pbkdf2_hmac','salt', '2000');
    9 nếu
    CREATE TABLE md5_tbl (md5_val BINARY(16), ...);
    INSERT INTO md5_tbl (md5_val, ...) VALUES(UNHEX(MD5('abcdef')), ...);
    66 là
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'pbkdf2_hmac','salt', '2000');
    9.

    CREATE TABLE md5_tbl (md5_val BINARY(16), ...);
    INSERT INTO md5_tbl (md5_val, ...) VALUES(UNHEX(MD5('abcdef')), ...);
    28 có thể được sử dụng để cung cấp vectơ khởi tạo cho các hàm
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');
    4 và
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'hkdf', 'salt', 'info');
    3. Để sử dụng trong bối cảnh đó,
    CREATE TABLE md5_tbl (md5_val BINARY(16), ...);
    INSERT INTO md5_tbl (md5_val, ...) VALUES(UNHEX(MD5('abcdef')), ...);
    66 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.

    CREATE TABLE md5_tbl (md5_val BINARY(16), ...);
    INSERT INTO md5_tbl (md5_val, ...) VALUES(UNHEX(MD5('abcdef')), ...);
    28 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

    CREATE TABLE md5_tbl (md5_val BINARY(16), ...);
    INSERT INTO md5_tbl (md5_val, ...) VALUES(UNHEX(MD5('abcdef')), ...);
    28 đượ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
    mysql> SET block_encryption_mode = 'aes-256-cbc';
    mysql> SET @key_str = SHA2('My secret passphrase',512);
    mysql> SET @init_vector = RANDOM_BYTES(16);
    mysql> SET @crypt_str = AES_ENCRYPT('text',@key_str,@init_vector);
    mysql> SELECT AES_DECRYPT(@crypt_str,@key_str,@init_vector);
    +-----------------------------------------------+
    | AES_DECRYPT(@crypt_str,@key_str,@init_vector) |
    +-----------------------------------------------+
    | text                                          |
    +-----------------------------------------------+
    4. Để 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
    mysql> SET block_encryption_mode = 'aes-256-cbc';
    mysql> SET @key_str = SHA2('My secret passphrase',512);
    mysql> SET @init_vector = RANDOM_BYTES(16);
    mysql> SET @crypt_str = AES_ENCRYPT('text',@key_str,@init_vector);
    mysql> SELECT AES_DECRYPT(@crypt_str,@key_str,@init_vector);
    +-----------------------------------------------+
    | AES_DECRYPT(@crypt_str,@key_str,@init_vector) |
    +-----------------------------------------------+
    | text                                          |
    +-----------------------------------------------+
    4. For more information about that option, see Section 4.5.1, “mysql — The MySQL Command-Line Client”.

  • SHA1 (________ 64), SHA (________ 64), SHA(

    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'pbkdf2_hmac','salt', '2000');
    4)

    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', '', 'pbkdf2_hmac','salt', '2000');
    9 nếu đối số là
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'pbkdf2_hmac','salt', '2000');
    9. 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ả.
    16 * (trunc(string_length / 16) + 1)
    2 đồng nghĩa với
    16 * (trunc(string_length / 16) + 1)
    3.

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

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

    16 * (trunc(string_length / 16) + 1)
    3 có thể được coi là một loại tiền điện tử an toàn hơn tương đương với
    16 * (trunc(string_length / 16) + 1)
    1. 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 (________ 64,

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

    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', '', 'pbkdf2_hmac','salt', '2000');
    9 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', '', 'pbkdf2_hmac','salt', '2000');
    9. 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.

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

    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.

    16 * (trunc(string_length / 16) + 1)
    4 có thể được coi là an toàn về mặt mật mã hơn
    16 * (trunc(string_length / 16) + 1)
    1 hoặc
    16 * (trunc(string_length / 16) + 1)
    3.

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

    Đư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', '', 'pbkdf2_hmac','salt', '2000');
    9 nếu đối số là
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'pbkdf2_hmac','salt', '2000');
    9. Hàm
    16 * (trunc(string_length / 16) + 1)
    6 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

    CREATE TABLE md5_tbl (md5_val BINARY(16), ...);
    INSERT INTO md5_tbl (md5_val, ...) VALUES(UNHEX(MD5('abcdef')), ...);
    97 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.

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

    Đư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', '', 'pbkdf2_hmac','salt', '2000');
    9 nếu đối số là
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'pbkdf2_hmac','salt', '2000');
    9. Để thảo luận và ví dụ bổ sung, hãy xem mô tả của hàm
    16 * (trunc(string_length / 16) + 1)
    5 liên quan.

  • 16 * (trunc(string_length / 16) + 1)
    02)

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

    CREATE TABLE md5_tbl (md5_val BINARY(16), ...);
    INSERT INTO md5_tbl (md5_val, ...) VALUES(UNHEX(MD5('abcdef')), ...);
    58. Nếu đối số không phải là giá trị nén, kết quả là
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'pbkdf2_hmac','salt', '2000');
    9; Nếu
    16 * (trunc(string_length / 16) + 1)
    05 là
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'pbkdf2_hmac','salt', '2000');
    9, kết quả cũng là
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'pbkdf2_hmac','salt', '2000');
    9. Hàm này yêu cầu MySQL phải được biên dịch với thư viện nén như
    CREATE TABLE md5_tbl (md5_val BINARY(16), ...);
    INSERT INTO md5_tbl (md5_val, ...) VALUES(UNHEX(MD5('abcdef')), ...);
    45. Nếu không, giá trị trả về luôn luôn là
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'pbkdf2_hmac','salt', '2000');
    9.

    CREATE TABLE md5_tbl (md5_val BINARY(16), ...);
    INSERT INTO md5_tbl (md5_val, ...) VALUES(UNHEX(MD5('abcdef')), ...);
    4
  • 16 * (trunc(string_length / 16) + 1)
    10)

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

    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'pbkdf2_hmac','salt', '2000');
    9 nếu
    16 * (trunc(string_length / 16) + 1)
    12 là
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'pbkdf2_hmac','salt', '2000');
    9.

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

    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'pbkdf2_hmac','salt', '2000');
    4)

    Đư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', '', 'pbkdf2_hmac','salt', '2000');
    9 nếu đối số là
    SELECT AES_ENCRYPT('mytext','mykeystring', '', 'pbkdf2_hmac','salt', '2000');
    9. Giá trị trả về dao động từ 0 (yếu) đến 100 (mạnh).

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

    16 * (trunc(string_length / 16) + 1)
    17 được thực hiện bởi thành phần
    16 * (trunc(string_length / 16) + 1)
    18. 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
    16 * (trunc(string_length / 16) + 1)
    18, 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
    16 * (trunc(string_length / 16) + 1)
    18. 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

    16 * (trunc(string_length / 16) + 1)
    21 được bật và mật khẩu khớp với tên người dùng,
    16 * (trunc(string_length / 16) + 1)
    17 trả về 0 bất kể các biến hệ thống
    16 * (trunc(string_length / 16) + 1)
    18 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à <
    16 * (trunc(string_length / 16) + 1)
    24
    25
    Thỏa mãn chính sách 1 (
    16 * (trunc(string_length / 16) + 1)
    25)
    50
    Thỏa mãn chính sách 2 (
    16 * (trunc(string_length / 16) + 1)
    26)
    75
    Thỏa mãn chính sách 3 (
    16 * (trunc(string_length / 16) + 1)
    27)
    100

Chúng ta có thể mã hóa dữ liệu trong MySQL không?

Để cho phép mã hóa cho không gian bảng hệ thống MySQL, chỉ định tên bảng không gian và tùy chọn mã hóa trong câu lệnh ALTER TABLESPACE. mysql> thay đổi không gian bảng mã hóa mysql = 'y'; Để vô hiệu hóa mã hóa cho không gian bảng hệ thống MySQL, hãy đặt mã hóa = 'n' bằng cách sử dụng câu lệnh ALTER TABLESPACE.. mysql> ALTER TABLESPACE mysql ENCRYPTION = 'Y'; To disable encryption for the mysql system tablespace, set ENCRYPTION = 'N' using an ALTER TABLESPACE statement.

Làm cách nào để mã hóa một bảng trong mysql?

Để mã hóa dữ liệu trong một không gian bảng mỗi bảng Innodb, hãy chạy thay đổi bảng tbl_name mã hóa = 'y'. Để mã hóa một không gian bảng chung hoặc không gian bảng MySQL, hãy chạy thay đổi bảng không gian bảng không gian bảng_name encryption = 'y'. Hỗ trợ mã hóa cho các không gian bảng chung đã được giới thiệu trong MySQL 8.0.ALTER TABLE tbl_name ENCRYPTION = 'Y' . To encrypt a general tablespace or the mysql tablespace, run ALTER TABLESPACE tablespace_name ENCRYPTION = 'Y' . Encryption support for general tablespaces was introduced in MySQL 8.0.

Làm thế nào để MySQL mã hóa dữ liệu?

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 KEY_STR.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.use of a key derivation function (KDF) to create a cryptographically strong secret key from the information passed in key_str . The derived key is used to encrypt and decrypt the data, and it remains in the MySQL Server instance and is not accessible to users.

Mã hóa cột cơ sở dữ liệu là gì?

Mã hóa cấp độ cột là một loại phương thức mã hóa cơ sở dữ liệu cho phép người dùng chọn thông tin hoặc thuộc tính cụ thể được mã hóa thay vì mã hóa toàn bộ tệp cơ sở dữ liệu.a type of database encryption method that allows user to select specific information or attributes to be encrypted instead of encrypting the entire database file.