Hash là gì?

Hash là gì?

Hash (hàm băm) được sử dụng trong nhiều ứng dụng chẳng hạn như mật mã, xác thực, kiểm tra tính toàn vẹn của dữ liệu và chữ ký số. Chúng cũng được sử dụng để lập chỉ mục dữ liệu trong cơ sở dữ liệu và công cụ tìm kiếm. Trong bài viết này, BlockchainWork sẽ thảo luận về những điều cơ bản của hàm băm và các trường hợp sử dụng của chúng.

Tổng quan về hash

Hash là quá trình chuyển đổi khóa hoặc chuỗi ký tự thành một giá trị khác. Nó có thể chuyển đổi bất kỳ giá trị nào, chẳng hạn như số hoặc tài liệu  thành một chuỗi có độ dài xác định.

Các hàm mã hóa có thể giải mã dữ liệu, trong khi các hash function chỉ có thể biến đổi dữ liệu theo một hướng và nó không thể chuyển đổi dữ liệu đã băm trở lại dữ liệu ban đầu. Ngoài ra, nếu bạn thay đổi dù chỉ một ký tự trong dữ liệu gốc, kết quả được băm sẽ hoàn toàn khác. Điều này khiến bạn không thể đoán được dữ liệu gốc từ kết quả được băm.

Chức năng phổ biến của hàm băm là lưu trữ mật khẩu cho các trang web. Các trang web thường băm mật khẩu và lưu trữ chúng trong cơ sở dữ liệu. Giá trị băm của mật khẩu nhập từ biểu mẫu được so sánh với giá trị băm của mật khẩu lưu trữ trong cơ sở dữ liệu và mật khẩu xác nhận bằng cách xem liệu chúng có khớp hay không.

Tuy nhiên chỉ có mật khẩu băm được lưu trữ trong cơ sở dữ liệu, nên không thể khôi phục mật khẩu từ các giá trị số được lưu trữ trong cơ sở dữ liệu và một mức độ bảo mật nhất định được duy trì ngay cả khi nội dung của cơ sở dữ liệu bị rò rỉ.

Hash được sử dụng ở mọi nơi trong các blockchain như Bitcoin. Đặc biệt trong khai thác, hash được sử dụng nhiều lần, vì vậy hiệu quả của việc tính toán của nó là rất quan trọng. Vì lý do đó, phần cứng chuyên dùng để tính toán hash cũng đang được phát triển.

Các hash function được Bitcoin sử dụng là SHA256 và RIPEMD160. Chúng phù hợp để tính toán trên GPU và ASIC (phần cứng dành riêng cho tính toán). Mặt khác, nhiều chuỗi khối khác sử dụng thuật toán băm khó tính toán với GPU và ASIC để có thể dễ dàng khai thác chúng trên PC thông thường.

SHA256 được sử dụng trong Bitcoin là một trong những hàm băm tính giá trị đặc trưng có độ dài cố định từ độ dài tùy ý của văn bản gốc. Nói cách khác, nó tạo ra giá trị băm 256 bit từ bất kỳ độ dài nào của văn bản gốc. SHA256 được sử dụng rộng rãi nhờ sự cân bằng tuyệt vời giữa tính dễ thực hiện, tốc độ tính toán và bảo mật mã hóa.

Ví dụ về hash

Để hiểu được các đặc điểm trên, chúng ta hãy áp dụng hash function SHA256 cho dữ liệu và chuyển đổi nó như sau.

Chuyển-dổi-dữ-liệu-bằng-hash-function

Chuyển đổi dữ liệu bằng hash function (Nguồn Gaiax)

Do đó, một ký tự hoặc bit khác biệt sẽ dẫn đến một giá trị băm hoàn toàn khác.

Khác-dữ-liệu-dầu-vào-sẽ-cho-ra-kết-quả-khác-nhau

Khác dữ liệu đầu vào sẽ cho ra kết quả khác nhau (Nguồn Gaiax)

Một tính năng khác là độ dài (số bit) của giá trị số đầu ra là như nhau ngay cả trong trường hợp chuỗi ký tự dài. Do đó bất kỳ chuỗi ký tự dài nào cũng được chuyển đổi thành độ dài cố định. Vì vậy nó thường được sử dụng như một hàm để tóm tắt các câu và tệp hình ảnh.

Hash đôi

Hash đôi là việc sử dụng lặp đi lặp lại các hash function. Giá trị đầu ra sau khi được đưa vào hash một lần sẽ  được hash một lần nữa. Ưu điểm của hash đôi là tính bảo mật được nhân đôi so với việc áp dụng hash một lần. Vì lý do này, nó được sử dụng trong các tình huống khác nhau.

Như đã đề cập ở trên, trong số các hàm băm SHA256 và RIPEMD160 được sử dụng trong bitcoin nhưng hàm băm áp dụng SHA256 thường được sử dụng hơn. Tuy nhiên, nếu cần một hàm băm ngắn hơn, thì hàm băm có áp dụng SHA256 và RIPEMD160 sẽ được sử dụng. 

Kết luận

Các hash (hàm băm) là một phần quan trọng của mật mã học và chúng đóng một vai trò quan trọng trong bảo mật dữ liệu. Chúng được sử dụng để tạo ra một giá trị băm duy nhất từ bất kỳ dữ liệu cụ thể nào, sau đó có thể được sử dụng để xác minh tính xác thực của dữ liệu đó. Các hash function cũng được sử dụng để lưu trữ mật khẩu một cách an toàn, vì chúng có thể tạo ra một giá trị băm duy nhất cho mỗi mật khẩu. Tóm lại, các hash function cung cấp một cách hiệu quả để lưu trữ và xác thực dữ liệu một cách an toàn. 

BlockchainWork biên dịch

Nguồn: Gaiax blockchain

>> Có thể bạn quan tâm:

Việc làm blockchain - web3

(Hà Nội) Junior/Middle Product Owner (Net Salary: 15 - 30M)

Hạn ứng tuyển 30/12/2024
Mức lương: 15 - 30 triệu đồng

(HCM) Test

Hạn ứng tuyển 30/01/2025
Mức lương: Lên đến 60 triệu đồng

(Hà Nội) Nhân Viên Content Marketing

Hạn ứng tuyển 14/01/2025
Mức lương: 10 - 15 triệu đồng

Deputy Engineering Manager (Phó Phòng Kỹ Thuật)

Hạn ứng tuyển 30/12/2024
Mức lương: Thỏa thuận

(Hà Nội) Senior Back-end Developer (Java)

Hạn ứng tuyển 30/12/2024
Mức lương: Lên đến 65 triệu đồng

(Hà Nội) Senior Mobile Developer (Flutter/React Native)

Hạn ứng tuyển 30/01/2025
Mức lương: Lên đến 50 triệu đồng

(Hà Nội) Senior Manual Tester

Hạn ứng tuyển 30/12/2024
Mức lương: Lên đến 35 triệu đồng

(Hà Nội) IT Sales/ Account Manager

Hạn ứng tuyển 30/01/2025
Mức lương: Lên đến 16 triệu đồng

(HCM) Kế Toán Trưởng/ Giám Đốc Tài Chính (CFO)

Hạn ứng tuyển 30/12/2024
Mức lương: Lên đến 2000 USD

(Hà Nội) Nhân Viên Graphic Designer (từ 1 Năm Kinh Nghiệm)

Hạn ứng tuyển 14/01/2025
Mức lương: 10 - 15 triệu đồng

(Hà Nội) Trưởng Phòng Pháp Chế

Hạn ứng tuyển 30/12/2024
Mức lương: Thỏa thuận

(HCM) Merchants Accquiring

Hạn ứng tuyển 30/01/2025
Mức lương: Thỏa thuận

(Hà Nội) Tester/QC Lead (Up To $3000)

Hạn ứng tuyển 30/12/2024
Mức lương: Lên đến 3000 USD

(Hà Nội) Senior IT Business Analyst Cum PM

Hạn ứng tuyển 30/12/2024
Mức lương: 1000 - 3000 USD

(Hà Nội) Junior General Accountant

Hạn ứng tuyển 30/12/2024
Mức lương: Lên đến 13 triệu đồng

(Hà Nội) Senior Backend Developer (Nodejs, Java)

Hạn ứng tuyển 30/12/2024
Mức lương: Thỏa thuận

(Hà Nội) Middle Graphic Designer (up To 20M)

Hạn ứng tuyển 30/12/2024
Mức lương: Lên đến 20 triệu đồng

(HCM) Trợ Lý Mảng Vận Hành KOL (Tiếng Trung)

Hạn ứng tuyển 14/01/2025
Mức lương: 12 - 15 triệu đồng

(HCM) Business Analyst (3+ Year Of Experience)

Hạn ứng tuyển 30/12/2024
Mức lương: Thỏa thuận

(Hà Nội) Junior/Middle Scrum Master

Hạn ứng tuyển 30/12/2024
Mức lương: Lên đến 25 triệu đồng