Hướng dẫn what is the datatype for password in mysql? - kiểu dữ liệu cho mật khẩu trong mysql là gì?

Luôn luôn sử dụng thuật toán băm mật khẩu: argon2, scrypt, bcrypt hoặc pbkdf2.

Argon2 đã giành chiến thắng trong cuộc thi băm mật khẩu 2015. Scrypt, BCrypt và PBKDF2 là các thuật toán cũ hơn được coi là ít được ưu tiên hơn, nhưng về cơ bản vẫn còn âm thanh, vì vậy nếu nền tảng của bạn không hỗ trợ argon2, thì bây giờ có thể sử dụng một thuật toán khác.

Không bao giờ lưu trữ mật khẩu trực tiếp trong cơ sở dữ liệu. Cũng không mã hóa nó, nếu không, nếu trang web của bạn bị vi phạm, kẻ tấn công sẽ nhận được khóa giải mã và do đó có thể có được tất cả các mật khẩu. Mật khẩu phải được băm.

Mật khẩu băm có các thuộc tính khác nhau từ băm băm hoặc băm mật mã. Không bao giờ sử dụng hàm băm mật mã thông thường như MD5, SHA-256 hoặc SHA-512 trên mật khẩu. Thuật toán băm mật khẩu sử dụng muối, là duy nhất (không được sử dụng cho bất kỳ người dùng nào khác hoặc trong cơ sở dữ liệu của bất kỳ ai khác). Muối là cần thiết để những kẻ tấn công không thể tính trước băm mật khẩu thông thường: với muối, chúng phải khởi động lại tính toán cho mỗi tài khoản. Một thuật toán băm mật khẩu về bản chất chậm - & nbsp; chậm như bạn có thể đủ khả năng. Sự chậm chạp làm tổn thương kẻ tấn công nhiều hơn bạn vì kẻ tấn công phải thử nhiều mật khẩu khác nhau. Để biết thêm thông tin, hãy xem cách mật khẩu băm an toàn.

Mật khẩu băm mã hóa bốn mẩu thông tin:

  • Một chỉ số trong đó thuật toán được sử dụng. Điều này là cần thiết cho sự nhanh nhẹn: Khuyến nghị về mật mã thay đổi theo thời gian. Bạn cần có khả năng chuyển sang một thuật toán mới.
  • Một chỉ số khó khăn hoặc độ cứng. Giá trị này càng cao, cần nhiều tính toán để tính toán băm. Đây phải là một hằng số hoặc giá trị cấu hình toàn cầu trong hàm thay đổi mật khẩu, nhưng nó sẽ tăng theo thời gian khi máy tính nhanh hơn, vì vậy bạn cần nhớ giá trị cho mỗi tài khoản. Một số thuật toán có một giá trị số duy nhất, một số khác có nhiều tham số ở đó (ví dụ: để điều chỉnh sử dụng CPU và sử dụng RAM một cách riêng biệt).
  • Muối. Vì muối phải là duy nhất trên toàn cầu, nó phải được lưu trữ cho mỗi tài khoản. Muối nên được tạo ngẫu nhiên trên mỗi thay đổi mật khẩu.
  • Hash thích hợp, tức là đầu ra của tính toán toán học trong thuật toán băm.

Nhiều thư viện bao gồm một chức năng cặp một cách thuận tiện các gói thông tin này dưới dạng một chuỗi duy nhất: một hàm lấy chỉ báo thuật toán, chỉ báo độ cứng và mật khẩu, tạo một muối ngẫu nhiên và trả về chuỗi băm đầy đủ; và một thứ lấy mật khẩu và chuỗi băm đầy đủ làm đầu vào và trả về boolean cho biết liệu mật khẩu có chính xác hay không. Không có tiêu chuẩn phổ quát, nhưng mã hóa phổ biến là

$algorithm$parameters$salt$output

Trong đó

PASSWORD( string_to_encrypt )
0 là một số hoặc một chuỗi chữ và số ngắn mã hóa sự lựa chọn thuật toán,
PASSWORD( string_to_encrypt )
1 là một chuỗi có thể in và
PASSWORD( string_to_encrypt )
2 và
PASSWORD( string_to_encrypt )
3 được mã hóa trong Base64 mà không kết thúc
PASSWORD( string_to_encrypt )
4.

16 byte là đủ cho muối và đầu ra. (Xem ví dụ: các đề xuất cho argon2.) Được mã hóa trong base64, đó là 21 ký tự. Hai phần khác phụ thuộc vào thuật toán và tham số, nhưng 20 ký tự40 là điển hình. Đó là tổng cộng khoảng 82 ký tự ASCII (

PASSWORD( string_to_encrypt )
5 và không cần Unicode), mà bạn nên thêm một biên độ an toàn nếu bạn nghĩ rằng sẽ rất khó để phóng to trường sau này.about 82 ASCII characters (
PASSWORD( string_to_encrypt )
5, and no need for Unicode), to which you should add a safety margin if you think it's going to be difficult to enlarge the field later.

Nếu bạn mã hóa băm ở định dạng nhị phân, bạn có thể đưa nó xuống 1 byte cho thuật toán, 1 By4 byte cho độ cứng (nếu bạn mã hóa một số tham số) và 16 byte mỗi lần cho muối và đầu ra , với tổng số 37 byte. Nói 40 byte (

PASSWORD( string_to_encrypt )
6) để có ít nhất một vài byte dự phòng. Lưu ý rằng đây là các byte 8 bit, không thể in các ký tự, đặc biệt là trường có thể bao gồm các byte null.40 bytes (
PASSWORD( string_to_encrypt )
6) to have at least a couple of spare bytes. Note that these are 8-bit bytes, not printable characters, in particular the field can include null bytes.

Lưu ý rằng độ dài của băm hoàn toàn không liên quan đến độ dài của mật khẩu.

Cải thiện bài viết

Lưu bài viết

  • Đọc
  • Bàn luận
  • Cải thiện bài viết

    Lưu bài viết

    Đọc

    Bàn luận

    Syntax:

    PASSWORD( string_to_encrypt )

    Hàm Mật khẩu MySQL được sử dụng cho việc tạo mật khẩu băm bằng chuỗi mật khẩu văn bản đơn giản mà nó sử dụng các kỹ thuật băm để tạo mật khẩu băm. Hàm này được thực hiện bởi hệ thống xác thực.

    • Máy chủ MySQL sử dụng chức năng mật khẩu để mã hóa mật khẩu MySQL để lưu trữ trong cột Mật khẩu của bảng cấp người dùng. Giá trị được trả về bởi hàm mật khẩu là chuỗi băm hoặc null nếu đối số là null. Hàm Mật khẩu chấp nhận một tham số là chuỗi được mã hóa. It is used to specify the plain text string that is to be encrypted.

    Các tham số được sử dụng:
    The PASSWORD function in MySQL returns a hashed string.

    String_to_encrypt - Nó được sử dụng để chỉ định chuỗi văn bản thuần túy sẽ được mã hóa.

    • Giá trị trả về: Hàm mật khẩu trong MySQL trả về chuỗi băm.
    • Các phiên bản được hỗ trợ của MySQL:
    • MySQL 5.7
    • MySQL 5.6
    • MySQL 5.5
    • MySQL 5.1

    MySQL 5.0 Implementing PASSWORD function on a string.

    SELECT 
    PASSWORD('xyz'); 

    Output:

    6gd7gb67shy87865 

    MySQL 4.1 Implementing PASSWORD function on a string with a combination of characters and integer values.

    SELECT 
    PASSWORD('xyz123'); 

    Output:

    54fg56gs32sgi3862 

    Ví dụ-1: Thực hiện chức năng mật khẩu trên một chuỗi. Implementing PASSWORD function on a bigger string.

    SELECT 
    PASSWORD('geeksforgeeks'); 

    Output:

    79sgs54uksr1fy76509 

    Ví dụ-4: Thực hiện chức năng mật khẩu trên chuỗi null. Implementing PASSWORD function on a NULL string.

    SELECT 
    PASSWORD('NULL'); 

    Output:

    NULL 

    Mật khẩu loại dữ liệu nào trong MySQL?

    Hàm mật khẩu trong MySQL trả về chuỗi băm.hashed string.

    Kiểu dữ liệu của mật khẩu trong SQL là gì?

    Sử dụng Kiểu dữ liệu SQL char (60) để lưu trữ mã hóa bcrypt này.Lưu ý chức năng này không mã hóa như một chuỗi các chữ số thập lục phân, vì vậy chúng ta không thể dễ dàng xuất hiện để lưu trữ trong nhị phân.CHAR(60) to store this encoding of a Bcrypt hash. Note this function doesn't encode as a string of hexadecimal digits, so we can't as easily unhex it to store in binary.

    Mật khẩu nên loại dữ liệu nào?

    NIST (ở Hoa Kỳ) khuyến nghị SHA-256 trở lên.Vì thuật toán băm luôn tạo ra giá trị độ dài tập, bạn sẽ cần 256 bit để lưu mật khẩu băm SHA-256 này.384 bit cho SHA-384, v.v.sha-256 or higher. Since a hashing algorithm always produces a value of set length you will need 256 bits to store this sha-256 hashed password. 384 bits for sha-384 and so on.

    Tôi có thể sử dụng varchar cho mật khẩu không?

    Vì vậy, bạn có thể thấy rằng Varchar có lợi nếu độ dài của chuỗi mà bạn đang lưu trữ là thay đổi.Lý do tại sao char thường được sử dụng cho các trường mật khẩu là do đầu ra của các thuật toán băm là nhất quán bất kể độ dài của đầu vào.VARCHAR is beneficial if the length of the string that you are storing is variable. The reason why CHAR is often used for password fields is because the output of hashing algorithms is consistent regardless of the length of input.