BTC
$96,000
5.73%
ETH
$3,521.91
3.97%
HTX
$0.{5}2273
5.23%
SOL
$198.17
3.05%
BNB
$710
3.05%
lang
简体中文
繁體中文
English
Tiếng Việt
한국어
日本語
ภาษาไทย
Türkçe
Trang chủ
AI AI
Tin nhanh
Bài viết
Sự kiện
BlockBeats Pro
Thêm
Thông tin tài chính
Chuyên đề
Hệ sinh thái chuỗi khối
Mục nhập
Podcast
Data
OPRR
Partnered With:

Giới thiệu đơn giản về Solidity|Bài 28: Hash

Đọc bài viết này mất 7 phút
Bài viết này giới thiệu hàm băm là gì và cách sử dụng hàm băm keccak256 được sử dụng phổ biến nhất của Solidity.
Tiêu đề gốc: " Giới thiệu đơn giản về Solidity: 28. Để biết chi tiết, tôi cũng sẽ viết "Giới thiệu về Solidity Minimalist" cho người mới sử dụng (chuyên gia lập trình có thể tìm hướng dẫn khác) và cập nhật 1-3 bài giảng mỗi tuần.


Tất cả các mã và hướng dẫn đều là nguồn mở trên github: github.com/AmazingAng/WTFSolidity


Ha Hàm băm là một khái niệm mật mã có thể chuyển đổi một thông điệp có độ dài bất kỳ thành giá trị có độ dài cố định, còn được gọi là hàm băm. Trong bài giảng này, chúng tôi giới thiệu ngắn gọn về hàm băm và ứng dụng của nó trong tính rắn


Các thuộc tính của Hash


Một hàm băm tốt phải có các đặc điểm sau:


Một chiều: chuyển tiếp thao tác từ thông điệp đầu vào tới hàm băm của nó Đơn giản và chắc chắn duy nhất, nhưng ngược lại rất khó khăn và chỉ có thể dựa vào việc liệt kê bạo lực.

Độ nhạy: Nếu thông báo đầu vào thay đổi một chút thì hàm băm của nó sẽ thay đổi rất nhiều.

Hiệu quả: Hoạt động từ thông điệp đầu vào đến hàm băm đều hiệu quả.

Tính đồng nhất: Xác suất của mỗi giá trị băm thu được về cơ bản là bằng nhau.

Khả năng chống va chạm: Khả năng chống va chạm yếu: Cho một thông điệp x, rất khó tìm được một thông điệp x' khác sao cho hash(x) = hash(x').

Khả năng chống va chạm mạnh: Khó tìm được bất kỳ x và x' nào sao cho hash(x) = hash(x').


Ứng dụng Hash


Tạo nhận dạng duy nhất cho dữ liệu

Chữ ký được mã hóa

Mã hóa an toàn 


Keccak256


Chức năng của Keccak256 là vững chắc hàm băm được sử dụng phổ biến nhất trong , cách sử dụng của nó rất đơn giản:



Tạo mã định danh duy nhất cho dữ liệu


Chúng tôi có thể sử dụng keccak256 để tạo số nhận dạng duy nhất cho một số dữ liệu. Ví dụ: chúng tôi có một số loại dữ liệu khác nhau: uint, chuỗi, địa chỉ. Trước tiên, chúng tôi có thể sử dụng phương thức abi.encodePacked để đóng gói và mã hóa chúng, sau đó sử dụng keccak256 để tạo mã định danh duy nhất:



Chống va chạm yếu


Chúng ta sử dụng keccak256 để chứng minh khả năng chống va chạm yếu đã đề cập trước đó, tức là cho một thông điệp x, hãy tìm một thông báo khác x 'Làm cho hàm băm(x) = hàm băm(x') trở nên khó khăn.


Chúng ta nhận được một thông báo 0xAA và cố gắng tìm một thông báo khác sao cho giá trị băm của chúng bằng nhau:



Bạn có thể thử 10 lần , xem bạn có thể gặp may mắn va chạm không.


Khả năng chống va chạm mạnh


Chúng tôi sử dụng keccak256 để chứng minh khả năng chống va chạm mạnh được đề cập trước tài sản, nghĩa là khó tìm được bất kỳ x và x' nào khác sao cho hash(x) = hash(x').


Chúng tôi xây dựng một hàm mạnh nhận hai tham số chuỗi khác nhau string1 và string2, sau đó xác định xem giá trị băm của chúng có giống nhau hay không:



Bạn có thể thử nó 10 lần và xem liệu bạn có thể gặp được một vụ va chạm may mắn không.


Tóm tắt


Trong bài giảng này, chúng tôi đã giới thiệu hàm băm là gì và cách sử dụng hàm băm được sử dụng phổ biến nhất của Solidity là keccak256.


Liên kết gốc


Chào mừng bạn tham gia cộng đồng chính thức của BlockBeats:

Nhóm Telegram đăng ký: https://t.me/theblockbeats

Nhóm Telegram thảo luận: https://t.me/BlockBeats_App

Tài khoản Twitter chính thức: https://twitter.com/BlockBeatsAsia

举报 Báo lỗi/Báo cáo
Chọn thư viện
Thêm mới thư viện
Hủy
Hoàn thành
Thêm mới thư viện
Chỉ mình tôi có thể nhìn thấy
Công khai
Lưu
Báo lỗi/Báo cáo
Gửi