AES_DECRYPT( crypt_str
, key_str
)
This function allows decryption of data using the official AES (Advanced Encryption Standard) algorithm. Chức năng này cho phép giải mã dữ liệu bằng cách sử dụng AES chính thức (Advanced Encryption Standard) thuật toán. For more information, see the description of AES_ENCRYPT()
. Để biết thêm thông tin, xem mô tả của AES_ENCRYPT()
.
AES_ENCRYPT( str
, key_str
)
AES_ENCRYPT()
and AES_DECRYPT()
allow encryption and decryption of data using the official AES (Advanced Encryption Standard) algorithm, previously known as “ Rijndael. ” Encoding with a 128-bit key length is used, but you can extend it up to 256 bits by modifying the source. AES_ENCRYPT()
và AES_DECRYPT()
cho phép mã hóa và giải mã dữ liệu bằng cách sử dụng chính thức AES (Advanced Encryption Standard) thuật toán, trước đây được gọi là "Rijndael chiều dài." Encoding với khóa 128-bit được sử dụng, nhưng bạn có thể mở rộng nó lên đến 256 bit bằng cách sửa đổi mã nguồn. We chose 128 bits because it is much faster and it is secure enough for most purposes. Chúng tôi chọn 128 bit bởi vì nó là nhanh hơn nhiều và nó là an toàn đủ cho hầu hết các mục đích.
AES_ENCRYPT()
encrypts a string and returns a binary string. AES_DECRYPT()
decrypts the encrypted string and returns the original string. AES_ENCRYPT()
mã hóa một chuỗi và trả về một chuỗi nhị phân. AES_DECRYPT()
giải mã chuỗi mã hóa và trả về chuỗi ban đầu. The input arguments may be any length. Các đối số đầu vào có thể là bất kỳ chiều dài. If either argument is NULL
, the result of this function is also NULL
. Nếu đối số, hoặc là NULL
, kết quả của chức năng này cũng là NULL
.
Because AES is a block-level algorithm, padding is used to encode uneven length strings and so the result string length may be calculated using this formula: Do AES là một cấp thuật toán khối, đệm được sử dụng để mã hóa các chuỗi có chiều dài không đồng đều và do đó chiều dài chuỗi kết quả có thể được tính bằng cách sử dụng công thức này:
16 * (trunc( string_length
/ 16) + 1) 16 * (hàm TRUNC ( string_length
/ 16) + 1)
If AES_DECRYPT()
detects invalid data or incorrect padding, it returns NULL
. Nếu AES_DECRYPT()
phát hiện dữ liệu không hợp lệ hoặc đệm không đúng, nó sẽ trả về NULL
. However, it is possible for AES_DECRYPT()
to return a non- NULL
value (possibly garbage) if the input data or the key is invalid. Tuy nhiên, có thể cho AES_DECRYPT()
để trở về một không NULL
giá trị (có thể là rác) nếu dữ liệu đầu vào hoặc phím không hợp lệ.
You can use the AES functions to store data in an encrypted form by modifying your queries: Bạn có thể sử dụng chức năng lưu trữ dữ liệu AES trong một hình thức được mã hóa bằng cách sửa đổi các truy vấn của bạn:
INSERT INTO t VALUES (1,AES_ENCRYPT('text','password')); INSERT INTO t giá trị (1, AES_ENCRYPT ('text', 'mật khẩu'));
AES_ENCRYPT()
and AES_DECRYPT()
can be considered the most cryptographically secure encryption functions currently available in MySQL. AES_ENCRYPT()
và AES_DECRYPT()
có thể được coi là mã hóa hầu hết các chức năng mã hóa an toàn hiện đang có sẵn trong MySQL.
COMPRESS( string_to_compress
)
Compresses a string and returns the result as a binary string. Nén một chuỗi và trả về kết quả như là một chuỗi nhị phân. This function requires MySQL to have been compiled with a compression library such as zlib
. Otherwise, the return value is always NULL
. Chức năng này đòi hỏi MySQL đã được biên dịch với một thư viện nén như zlib
. Nếu không, giá trị trả lại luôn luôn là NULL
. The compressed string can be uncompressed with UNCOMPRESS()
. Chuỗi nén có thể được nén với UNCOMPRESS()
.
mysql> SELECT LENGTH(COMPRESS(REPEAT('a',1000)));
mysql> SELECT LENGTH(COMPRESS(REPEAT('a',1000)));
-> 21 -> 21
mysql> SELECT LENGTH(COMPRESS(''));
mysql> SELECT LENGTH(COMPRESS(''));
-> 0 -> 0
mysql> SELECT LENGTH(COMPRESS('a'));
mysql> SELECT LENGTH(COMPRESS('a'));
-> 13 -> 13
mysql> SELECT LENGTH(COMPRESS(REPEAT('a',16)));
mysql> SELECT LENGTH(COMPRESS(REPEAT('a',16)));
-> 15 -> 15
The compressed string contents are stored the following way: Nội dung chuỗi nén được lưu trữ theo cách sau:
Empty strings are stored as empty strings. chuỗi rỗng được lưu trữ như là chuỗi sản phẩm nào.
Nonempty strings are stored as a four-byte length of the uncompressed string (low byte first), followed by the compressed string. chuỗi không rỗng được lưu trữ như là một-byte chiều dài bốn của chuỗi không nén (thấp byte đầu tiên), tiếp theo là chuỗi nén. If the string ends with space, an extra “ .
” character is added to avoid problems with endspace trimming should the result be stored in a CHAR
or VARCHAR
column. Nếu chuỗi kết thúc với không gian, một "thêm .
"nhân vật được thêm vào để tránh vấn đề với endspace cắt tỉa kết quả cần được lưu giữ trong một CHAR
hay VARCHAR
cột. (However, use of nonbinary string data types such as CHAR
or VARCHAR
to store compressed strings is not recommended anyway because character set conversion may occur. Use a VARBINARY
or BLOB
binary string column instead.) (Tuy nhiên, việc sử dụng chuỗi nonbinary loại dữ liệu như CHAR
hay VARCHAR
để lưu trữ nén dây không được khuyến cáo anyway vì bộ chuyển đổi có thể xảy ra một ký tự. Sử dụng VARBINARY
hoặc BLOB
cột chuỗi nhị phân thay thế.)
DECODE( crypt_str
, pass_str
)
Decrypts the encrypted string crypt_str
using pass_str
as the password. crypt_str
should be a string returned from ENCODE()
. Giải mã chuỗi mã hóa crypt_str
sử dụng pass_str
như mật khẩu. crypt_str
phải là một chuỗi trở về từ ENCODE()
.
ENCODE( str
, pass_str
)
Encrypt str
using pass_str
as the password. Mã hóa str
bằng cách sử dụng pass_str
như mật khẩu. To decrypt the result, use DECODE()
. Để giải mã kết quả, sử dụng DECODE()
.
The result is a binary string of the same length as str
. Kết quả là một chuỗi nhị phân của độ dài tương tự như str
.
The strength of the encryption is based on how good the random generator is. Sức mạnh của mật mã dựa trên cách thức tốt các máy phát điện là ngẫu nhiên. It should suffice for short strings. Nó sẽ đủ cho các chuỗi ngắn.
DES_DECRYPT( crypt_str
[, key_str
])
Decrypts a string encrypted with DES_ENCRYPT()
. Giải mã một chuỗi mã hóa với DES_ENCRYPT()
. If an error occurs, this function returns NULL
. Nếu lỗi xảy ra, điều này hàm trả về NULL
.
This function works only if MySQL has been configured with SSL support. Chức năng này chỉ hoạt động nếu MySQL đã được cấu hình hỗ trợ SSL. See Section 5.5.6, “Using SSL for Secure Connections” . Xem Phần 5.5.6, "Sử dụng SSL cho kết nối an toàn" .
If no key_str
argument is given, DES_DECRYPT()
examines the first byte of the encrypted string to determine the DES key number that was used to encrypt the original string, and then reads the key from the DES key file to decrypt the message. Nếu không có key_str
đối số được đưa ra, DES_DECRYPT()
kiểm tra các byte đầu tiên của chuỗi được mã hóa để xác định các phím số DES đã được sử dụng để mã hóa các chuỗi ban đầu, và sau đó đọc chính từ các tập tin quan trọng để giải mã DES tin. For this to work, the user must have the SUPER
privilege. Để làm việc này, người sử dụng phải có các SUPER
đặc quyền. The key file can be specified with the --des-key-file
server option. Các tập tin quan trọng có thể được chỉ định với các --des-key-file
tùy chọn server.
If you pass this function a key_str
argument, that string is used as the key for decrypting the message. Nếu bạn vượt qua chức năng này một key_str
đối số, chuỗi ký tự được sử dụng như là chìa khóa để giải mã thông điệp.
If the crypt_str
argument does not appear to be an encrypted string, MySQL returns the given crypt_str
. Nếu crypt_str
đối số không xuất hiện cho được một chuỗi mã hóa, MySQL sẽ trả về cho crypt_str
.
DES_ENCRYPT( str
[,{ key_num
| key_str
}])
Encrypts the string with the given key using the Triple-DES algorithm. Mã hóa chuỗi với phím được sử dụng thuật toán Triple-DES.
This function works only if MySQL has been configured with SSL support. Chức năng này chỉ hoạt động nếu MySQL đã được cấu hình hỗ trợ SSL. See Section 5.5.6, “Using SSL for Secure Connections” . Xem Phần 5.5.6, "Sử dụng SSL cho kết nối an toàn" .
The encryption key to use is chosen based on the second argument to DES_ENCRYPT()
, if one was given. Các mã hóa khóa để sử dụng là lựa chọn dựa trên các tham số thứ hai để DES_ENCRYPT()
, nếu một chủng. With no argument, the first key from the DES key file is used. Với lập luận không có, phím đầu tiên từ tập tin quan trọng DES được sử dụng. With a key_num
argument, the given key number (0 to 9) from the DES key file is used. Với một key_num
đối số, các phím số nhất định (0-9) từ các tập tin quan trọng DES được sử dụng. With a key_str
argument, the given key string is used to encrypt str
. Với một key_str
đối số, chìa khóa cho chuỗi được sử dụng để mã hóa str
.
The key file can be specified with the --des-key-file
server option. Các tập tin quan trọng có thể được chỉ định với các --des-key-file
tùy chọn server.
The return string is a binary string where the first character is CHAR(128 | key_num
)
. Chuỗi trả về là một chuỗi nhị phân, nơi ký tự đầu tiên là CHAR(128 | key_num
)
. If an error occurs, DES_ENCRYPT()
returns NULL
. Nếu lỗi xảy ra, DES_ENCRYPT()
trả về NULL
.
The 128 is added to make it easier to recognize an encrypted key. 128 được thêm vào để làm cho nó dễ dàng hơn để nhận ra một khoá mật mã. If you use a string key, key_num
is 127. Nếu bạn sử dụng một chìa khóa dây, key_num
là 127.
The string length for the result is given by this formula: Chiều dài chuỗi cho kết quả được cho bởi công thức này:
new_len
= orig_len
+ (8 - ( orig_len
% 8)) + 1 new_len
= orig_len
+ (8 - ( orig_len
% 8)) + 1
Each line in the DES key file has the following format: Mỗi dòng trong tập tin quan trọng DES có định dạng sau:
key_num des_key_str
key_num des_key_str
Each key_num
value must be a number in the range from 0
to 9
. Mỗi key_num
giá trị phải là một số trong khoảng từ 0
đến 9
. Lines in the file may be in any order. des_key_str
is the string that is used to encrypt the message. Dòng trong tập tin có thể được theo thứ tự bất kỳ. des_key_str
là một chuỗi được sử dụng để mã hóa thông điệp. There should be at least one space between the number and the key. Nên có ít nhất một khoảng trống giữa số lượng và phím. The first key is the default key that is used if you do not specify any key argument to DES_ENCRYPT()
. Chìa khóa đầu tiên là phím mặc định được sử dụng nếu bạn không chỉ định bất kỳ đối số chính để DES_ENCRYPT()
.
You can tell MySQL to read new key values from the key file with the FLUSH DES_KEY_FILE
statement. Bạn có thể cho biết MySQL để đọc chính những giá trị mới từ các tập tin quan trọng với FLUSH DES_KEY_FILE
tuyên bố. This requires the RELOAD
privilege. Điều này đòi hỏi RELOAD
đặc quyền.
One benefit of having a set of default keys is that it gives applications a way to check for the existence of encrypted column values, without giving the end user the right to decrypt those values. Một lợi ích của việc có một bộ các phím mặc định là nó cho phép các ứng dụng một cách để kiểm tra sự tồn tại của các giá trị cột mã hóa, mà không cho người dùng cuối quyền để giải mã các giá trị.
mysql> SELECT customer_address FROM customer_table
> Mysql SELECT customer_address FROM customer_table
> WHERE crypted_credit_card = DES_ENCRYPT('credit_card_number');
> WHERE crypted_credit_card = DES_ENCRYPT('credit_card_number');
ENCRYPT( str
[, salt
])
Encrypts str
using the Unix crypt()
system call and returns a binary string. Mã hóa str
bằng cách sử dụng Unix crypt()
hệ thống gọi và trả về một chuỗi nhị phân. The salt
argument should be a string with at least two characters. Các salt
đối số phải là một chuỗi với ít nhất hai nhân vật. If no salt
argument is given, a random value is used. Nếu không có salt
đối số được đưa ra, một giá trị ngẫu nhiên được sử dụng.
mysql> SELECT ENCRYPT('hello');
mysql> SELECT ENCRYPT('hello');
-> 'VxuFAJXVARROc' -> 'VxuFAJXVARROc'
ENCRYPT()
ignores all but the first eight characters of str
, at least on some systems. ENCRYPT()
sẽ bỏ qua tất cả, nhưng các ký tự đầu tiên tám của str
, ít nhất là trên một số hệ thống. This behavior is determined by the implementation of the underlying crypt()
system call. Hành vi này được xác định bởi việc thực hiện cơ bản crypt()
hệ thống gọi.
The use of ENCRYPT()
with multi-byte character sets other than utf8
is not recommended because the system call expects a string terminated by a zero byte. Việc sử dụng ENCRYPT()
với nhân vật đa-byte bộ khác hơn là utf8
không được khuyến khích bởi vì hệ thống sẽ gọi một chuỗi kết thúc bởi một byte số không.
If crypt()
is not available on your system (as is the case with Windows), ENCRYPT()
always returns NULL
. Nếu crypt()
là không có sẵn trên hệ thống của bạn (như là trường hợp với Windows), ENCRYPT()
luôn trả về NULL
.
MD5( str
)
Calculates an MD5 128-bit checksum for the string. Tính toán MD5 checksum 128-bit cho chuỗi. The value is returned as a binary string of 32 hex digits, or NULL
if the argument was NULL
. Giá trị được trả về như là một chuỗi nhị phân của 32 chữ số hex, hoặc NULL
nếu đối số là NULL
. The return value can, for example, be used as a hash key. Các giá trị trả về có thể, ví dụ, được sử dụng như một chìa khóa băm.
mysql> SELECT MD5('testing');
mysql> SELECT MD5('testing');
-> 'ae2b1fca515949e5d54fb22b8ed95575' -> 'Ae2b1fca515949e5d54fb22b8ed95575'
This is the “ RSA Data Security, Inc. MD5 Message-Digest Algorithm. ” Đây là "RSA Data Security, Inc MD5 Message-Digest Algorithm".
If you want to convert the value to uppercase, see the description of binary string conversion given in the entry for the BINARY
operator in Section 11.9, “Cast Functions and Operators” . Nếu bạn muốn chuyển đổi giá trị thành chữ hoa, xem mô tả về chuyển đổi chuỗi nhị phân được đưa ra trong mục nhập cho BINARY
điều hành trong mục 11,9, "Diễn viên Chức năng và sử dụng" .
See the note regarding the MD5 algorithm at the beginning this section. Xem các lưu ý về thuật toán MD5 ở phần này bắt đầu.
OLD_PASSWORD( str
)
OLD_PASSWORD()
was added to MySQL when the implementation of PASSWORD()
was changed to improve security. OLD_PASSWORD()
returns the value of the old (pre-4.1) implementation of PASSWORD()
as a binary string, and is intended to permit you to reset passwords for any pre-4.1 clients that need to connect to your version 5.1 MySQL server without locking them out. OLD_PASSWORD()
đã được MySQL khi thực hiện các PASSWORD()
đã được thay đổi để cải thiện an ninh. OLD_PASSWORD()
trả về giá trị của (cũ trước 4,1) thực hiện PASSWORD()
như là một chuỗi nhị phân, và được thiết kế để cho phép bạn để thiết lập lại mật khẩu cho bất kỳ tiền 4,1 khách hàng có nhu cầu để kết nối với phiên bản của bạn 5,1 MySQL server mà không khóa chúng ra. See Section 5.3.2.3, “Password Hashing in MySQL” . Xem Phần 5.3.2.3, "Mật khẩu băm trong" MySQL .
PASSWORD( str
)
Calculates and returns a password string from the plaintext password str
and returns a binary string, or NULL
if the argument was NULL
. Tính toán và trả về một chuỗi mật khẩu từ mật khẩu chữ thô str
và trả về một chuỗi nhị phân, hoặc NULL
nếu đối số là NULL
. This is the function that is used for encrypting MySQL passwords for storage in the Password
column of the user
grant table. Đây là chức năng được sử dụng để mã hóa mật khẩu MySQL cho việc lưu trữ trong các Password
cột của user
bảng cấp.
mysql> SELECT PASSWORD('badpwd');
mysql> SELECT PASSWORD('badpwd');
-> '*AAB3E285149C0135D51A520E1940DD3263DC008C' -> '* AAB3E285149C0135D51A520E1940DD3263DC008C'
PASSWORD()
encryption is one-way (not reversible). PASSWORD()
là mã hóa một chiều (không thuận nghịch).
PASSWORD()
does not perform password encryption in the same way that Unix passwords are encrypted. PASSWORD()
không thực hiện mã hóa mật khẩu trong cùng một cách mà các mật khẩu được mã hóa Unix. See ENCRYPT()
. Xem ENCRYPT()
.
SHA1( str
)
, SHA( str
)
SHA1( str
)
, SHA( str
)
Calculates an SHA-1 160-bit checksum for the string, as described in RFC 3174 (Secure Hash Algorithm). Tính toán SHA-1 160-bit checksum cho chuỗi, như mô tả trong RFC 3.174 (Secure Hash Algorithm). The value is returned as a binary string of 40 hex digits, or NULL
if the argument was NULL
. Giá trị được trả về như là một chuỗi nhị phân của 40 chữ số hex, hoặc NULL
nếu đối số là NULL
. One of the possible uses for this function is as a hash key. Một trong những sử dụng chức năng này có thể cho là như là một chìa khóa hash. You can also use it as a cryptographic function for storing passwords. SHA()
is synonymous with SHA1()
. Bạn cũng có thể sử dụng nó như một mật mã cho chức năng lưu trữ mật khẩu. SHA()
là đồng nghĩa với SHA1()
.
mysql> SELECT SHA1('abc');
> Mysql SELECT SHA1('abc');
-> 'a9993e364706816aba3e25717850c26c9cd0d89d' -> 'A9993e364706816aba3e25717850c26c9cd0d89d'
SHA1()
can be considered a cryptographically more secure equivalent of MD5()
. SHA1()
có thể được coi là an toàn hơn mã hóa tương đương với MD5()
. However, see the note regarding the MD5 and SHA-1 algorithms at the beginning this section. Tuy nhiên, xem các lưu ý về MD5 và SHA-1 thuật toán ở phần này bắt đầu.
UNCOMPRESS( string_to_uncompress
)
Uncompresses a string compressed by the COMPRESS()
function. Uncompresses một chuỗi nén của COMPRESS()
chức năng. If the argument is not a compressed value, the result is NULL
. Nếu các đối số không phải là một giá trị nén, kết quả là NULL
. This function requires MySQL to have been compiled with a compression library such as zlib
. Chức năng này đòi hỏi MySQL đã được biên dịch với một thư viện nén như zlib
. Otherwise, the return value is always NULL
. Nếu không, giá trị trả lại luôn luôn là NULL
.
mysql> SELECT UNCOMPRESS(COMPRESS('any string'));
mysql> SELECT UNCOMPRESS(COMPRESS('any string'));
-> 'any string' -> 'Chuỗi bất kỳ'
mysql> SELECT UNCOMPRESS('any string');
mysql> SELECT UNCOMPRESS('any string');
-> NULL -> NULL
UNCOMPRESSED_LENGTH( compressed_string
)
Returns the length that the compressed string had before being compressed. Trả về độ dài chuỗi rằng đã có trước khi được nén nén.
mysql> SELECT UNCOMPRESSED_LENGTH(COMPRESS(REPEAT('a',30)));
mysql> SELECT UNCOMPRESSED_LENGTH(COMPRESS(REPEAT('a',30)));
-> 30 -> 30